Blender
V4.3
source
blender
editors
space_outliner
tree
tree_element_driver.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
9
#include "
BLI_listbase_wrapper.hh
"
10
11
#include "
BKE_fcurve_driver.h
"
12
13
#include "
DNA_anim_types.h
"
14
#include "
DNA_listBase.h
"
15
#include "
DNA_space_types.h
"
16
17
#include "
BLT_translation.hh
"
18
19
#include "
../outliner_intern.hh
"
20
21
#include "
tree_element_driver.hh
"
22
23
namespace
blender::ed::outliner
{
24
25
TreeElementDriverBase::TreeElementDriverBase
(
TreeElement
&legacy_te,
AnimData
&anim_data)
26
:
AbstractTreeElement
(legacy_te), anim_data_(anim_data)
27
{
28
BLI_assert
(legacy_te.
store_elem
->
type
==
TSE_DRIVER_BASE
);
29
legacy_te.
name
=
IFACE_
(
"Drivers"
);
30
}
31
32
void
TreeElementDriverBase::expand
(
SpaceOutliner
&
/*space_outliner*/
)
const
33
{
34
ID
*lastadded =
nullptr
;
35
36
for
(
FCurve
*fcu :
blender::ListBaseWrapper<FCurve>
(anim_data_.
drivers
)) {
37
if
(fcu->driver && fcu->driver->variables.first) {
38
ChannelDriver
*driver = fcu->driver;
39
40
for
(
DriverVar
*dvar :
blender::ListBaseWrapper<DriverVar>
(driver->
variables
)) {
41
/* loop over all targets used here */
42
DRIVER_TARGETS_USED_LOOPER_BEGIN
(dvar) {
43
if
(lastadded != dtar->id) {
44
/* XXX this lastadded check is rather lame, and also fails quite badly... */
45
add_element
(&
legacy_te_
.
subtree
, dtar->id,
nullptr
, &
legacy_te_
,
TSE_LINKED_OB
, 0);
46
lastadded = dtar->id;
47
}
48
}
49
DRIVER_TARGETS_LOOPER_END
;
50
}
51
}
52
}
53
}
54
55
}
// namespace blender::ed::outliner
BKE_fcurve_driver.h
DRIVER_TARGETS_USED_LOOPER_BEGIN
#define DRIVER_TARGETS_USED_LOOPER_BEGIN(dvar)
Definition
BKE_fcurve_driver.h:43
DRIVER_TARGETS_LOOPER_END
#define DRIVER_TARGETS_LOOPER_END
Definition
BKE_fcurve_driver.h:50
BLI_assert
#define BLI_assert(a)
Definition
BLI_assert.h:50
BLI_listbase_wrapper.hh
BLT_translation.hh
IFACE_
#define IFACE_(msgid)
Definition
BLT_translation.hh:41
DNA_anim_types.h
DNA_listBase.h
These structs are the foundation for all linked lists in the library system.
TSE_LINKED_OB
@ TSE_LINKED_OB
Definition
DNA_outliner_types.h:77
TSE_DRIVER_BASE
@ TSE_DRIVER_BASE
Definition
DNA_outliner_types.h:82
DNA_space_types.h
blender::ed::outliner::AbstractTreeElement
Definition
tree_element.hh:29
blender::ed::outliner::AbstractTreeElement::add_element
TreeElement * add_element(ListBase *lb, ID *owner_id, void *create_data, TreeElement *parent, short type, short index, const bool expand=true) const
Definition
tree_element.cc:240
blender::ed::outliner::AbstractTreeElement::legacy_te_
TreeElement & legacy_te_
Definition
tree_element.hh:36
blender::ed::outliner::TreeElementDriverBase::TreeElementDriverBase
TreeElementDriverBase(TreeElement &legacy_te, AnimData &anim_data)
Definition
tree_element_driver.cc:25
blender::ed::outliner::TreeElementDriverBase::expand
void expand(SpaceOutliner &space_outliner) const override
Definition
tree_element_driver.cc:32
blender::ed::outliner
Definition
outliner_collections.cc:42
blender::ListBaseWrapper
ListBaseWrapperTemplate< ListBase, T > ListBaseWrapper
Definition
BLI_listbase_wrapper.hh:99
outliner_intern.hh
AnimData
Definition
DNA_anim_types.h:1138
AnimData::drivers
ListBase drivers
Definition
DNA_anim_types.h:1196
ChannelDriver
Definition
DNA_anim_types.h:511
ChannelDriver::variables
ListBase variables
Definition
DNA_anim_types.h:513
DriverVar
Definition
DNA_anim_types.h:423
FCurve
Definition
DNA_anim_types.h:591
ID
Definition
DNA_ID.h:413
SpaceOutliner
Definition
DNA_space_types.h:289
TreeStoreElem::type
short type
Definition
DNA_outliner_types.h:16
blender::ed::outliner::TreeElement
Definition
outliner_intern.hh:84
blender::ed::outliner::TreeElement::subtree
ListBase subtree
Definition
outliner_intern.hh:95
blender::ed::outliner::TreeElement::name
const char * name
Definition
outliner_intern.hh:102
blender::ed::outliner::TreeElement::store_elem
TreeStoreElem * store_elem
Definition
outliner_intern.hh:97
tree_element_driver.hh
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0