[Bf-committers] Oops Redesign proposal.

Campbell Barton cbarton at metavr.com
Fri Jan 27 01:10:06 CET 2006


Hello all... from messing about with oops code for a while I have come 
up with this...
The current oops design is such that each window has its own oops data 
(oops layout, linked list for its own oops blocks).
can be a problem because most of the time I just want 1 oops layout...
related problem is that joining a window will loose your oops layout 
without warning.
- If this was the only problem I could follow tons suggestion and have 
an Oops copy/paste function so as to take the oops layout from 1 window 
into another..

For my use Im happy with 1 oops location per datablock (1 oops layout 
for all oops views), in some cases it may be usefull to see the same 
data multiple ways but AFAIK not that many people even use the Oops view 
let alone manually laying  out multiple oops view.

Refactoring oops could be done in many different ways but Ill suggest 
what I consider the best option first.

    * Depricate the current oops view - (Could keep it for compatibility
      and have function to copy the data to the new oops)
    * Rather then having oops data per view- have each ID struct point
      to an oops struct (NULL by default)
      This means every ID has 1 oops. at the moment getting an ID's oops
      block involves a full listbase lookup wich can be slow on large
      scenes.
      Doing this also means we can avoid having oops spesific linked
      lists. - just loop through blenders object, etc.

      This would have faster operation, There are some scenes where its
      been quicker to kill blender and reopen it then to wait for the
      oops data to be generated, when selecting the oops view by mistake.
      Because of the number of loops- larger scenes quickly become slow.
      Or wait for it to finish and then join the windows to free memory.

    * Add a custom property editor into the oops view!
      The oops view is the only place where (almost) all datablocks can
      be seen at once and there is only 1 item per datablock (unlike
      outliner)
      I could intergrate a custom property editor so the active Oops
      ID's property could be edited on a floating panel. (think the
      modifier stack)
      http://en.wikibooks.org/wiki/Blender_3D:_Blending_Into_Python/CustomProperties  
      -   for some design ideas on custom datablock properties.
    * Rework the oops block display- not related to anything above but
      would be nice.

 As sombody who uses the oops view in most of my projects depricating 
the current oops is the last option, but worth the effort... incase its 
not clear- this would be a project I would do all/most of the work on so 
Im mainly seeking opinions and comments- its a lot of work me to do and 
not have commited at some point.

The custom dataproperty would be a great advantage for content creation 
with games, simulation, rendering etc...
Can we afford to add 2 pointers to the ID struct? (probably dont want 
properties assigned to the oops blocks)

There are other midway solutions (oops datablocks share locations) or 
add a property editor to the current oops view, but Id prefer to re-do 
the whole thing.
If depricating the oops view is just not an option, we could add a view 
more focused on property editing but still has on oops layout....

- Cam

-- 
Campbell J Barton

133 Hope Street
Geelong West, Victoria 3218 Australia

URL:    http://www.metavr.com
e-mail: cbarton at metavr.com
phone: AU (03) 5229 0241


More information about the Bf-committers mailing list