Continued Outliner Code Refactor #96713
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Asset System
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#96713
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Outliner code is compiled in C++ now, and a big part of the tree building logic has be ported to a new object oriented design. See contents of
source/blender/editors/space_outliner/tree/
. A lot of existing code can be improved by making use of this new design.(NOTE) Note for interested GSoC participants --
A GSoC participant wouldn't be expected to get all these tasks done, this is just a general collection of TODOs. It's fine to only pick a few of these tasks, depending on the proposed project duration.
Relevant Design Notes
These basics about the new design are important to understand:
AbstractTreeDisplay
sub-class, e.g.TreeDisplayViewLayer
,TreeDisplaySequencer
, etc.AbstractTreeElement
sub-class, e.g.TreeElementGPencilLayer
,TreeElementNLATrack
. Not all tree element types are ported to this new design yet.TreeElement
. There is one for each visible element in the tree. It should be entirely replaced by theAbstractTreeElement
design.Possible Tasks
tree_element_get_icon()
with avirtual AbstractTreeElement::getIcon()
.TreeElement.directdata
. This is type unsafe and confusing (not clear what it contains in many places). Instead theAbstractTreeElement
sub-classes should store the exact data needed, and if needed expose those publicly in some way.outliner_add_element()
currently does both. This causes a few problems, most importantly, all data needed to construct an element has to be passed to the function as a (type unsafe)void *
.TreeElement.parent
pointer is set correctly).TreeElement
withAbstractTreeElement
.SpaceOutliner.tree
toSpaceOutliner_Runtime.tree
(the tree is runtime only UI data).AbstractTreeDisplay.tree
may also make sense.ListBase
.blender::Vector
?doSomething()
) function names in new C++ code to snake case (do_something()
). This is the conventional style for C++ code and how it probably should've been done in the beginning.AbstractTreeDisplay
sub-classes) do all tree building, removing the need forAbstractTreeElement.expand()
.a4a7af4732
,dc6fe73e70
.Optional Experiments:
Element Type Porting Status
Overview of element types and their porting status.
IS_REAL_ID()
returnstrue
TSE_SOME_ID
TreeElementID
and subclasses.TSE_NLA_ACTION
TreeElementNLAAction
TSE_DEFGROUP_BASE
TreeElementDeformGroupBase
TSE_DEFGROUP
TreeElementDeformGroup
TSE_BONE
TreeElementBone
TSE_EBONE
TreeElementEditBone
TSE_CONSTRAINT_BASE
TreeElementConstraintBase
TSE_CONSTRAINT
TreeElementConstraint
TSE_MODIFIER_BASE
TreeElementModifierBase
TSE_MODIFIER
TreeElementModifier
TSE_LINKED_OB
TreeElementLinkedObject
TSE_POSE_BASE
TreeElementPoseBase
TSE_POSE_CHANNEL
TreeElementPoseChannel
TSE_ANIM_DATA
TreeElementAnimData
TSE_R_LAYER_BASE
TreeElementViewLayerBase
TSE_R_LAYER
TreeElementViewLayer
TSE_POSEGRP_BASE
TreeElementPoseGroupBase
TSE_POSEGRP
TreeElementPoseGroup
TSE_LINKED_PSYS
TreeElementParticleSystem
TSE_LAYER_COLLECTION
TreeElementLayerCollection
TSE_SCENE_COLLECTION_BASE
TreeElementCollectionBase
TSE_VIEW_COLLECTION_BASE
TreeElementViewCollectionBase
TSE_SCENE_OBJECTS_BASE
TreeElementSceneObjectsBase
TSE_GPENCIL_EFFECT_BASE
TreeElementGPencilEffectBase
TSE_GPENCIL_EFFECT
TreeElementGPencilEffect
Other Elements
TSE_NLA
TreeElementNLA
TSE_NLA_TRACK
TreeElementNLATrack
TSE_DRIVER_BASE
TreeElementDriverBase
TSE_SEQUENCE
TreeElementSequence
TSE_SEQ_STRIP
TreeElementSequenceStrip
TSE_SEQUENCE_DUP
TreeElementSequenceStripDuplicate
TSE_RNA_STRUCT
TreeElementRNAStruct
TSE_RNA_PROPERTY
TreeElementRNAProperty
TSE_RNA_ARRAY_ELEM
TreeElementRNAArrayElement
TSE_ID_BASE
TSE_GP_LAYER
TreeElementGPencilLayer
TSE_LIBRARY_OVERRIDE_BASE
TreeElementOverridesBase
TSE_LIBRARY_OVERRIDE
TreeElementOverridesProperty
TSE_LIBRARY_OVERRIDE_OPERATION
TreeElementOverridesPropertyOperation
TSE_GENERIC_LABEL
TreeElementLabel
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscriber: @JulianEisel
Outliner Code Refactorto Continued Outliner Code RefactorAdded subscriber: @Chirag-Mathur
Added subscriber: @Jian-Wang
Added subscriber: @priyanshx19
While working on the task to convert snakeCase function names to camel_case function names, I have noticed on several occurrences that there are function names that have double underscore.
I noticed some of these in
outliner_draw.cc
:Those are just a few examples. Are these user errors while writing the functions, or are these intentional? There isn't any mention in the docs about this so just looking for some clarification before making any changes.
I think this intentional to indicate that these are meant to be callbacks, not regular functions. Not a usual convention and there is the
_fn
suffix now, so we can probably clean that up. I'm personally not bothered by it, wouldn't make an issue out of it.