Blender
V2.93
source
blender
editors
space_outliner
tree
tree_element_driver.cc
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version 2
5
* of the License, or (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software Foundation,
14
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
*/
16
21
#include "
BLI_listbase_wrapper.hh
"
22
23
#include "
BKE_fcurve_driver.h
"
24
25
#include "
DNA_anim_types.h
"
26
#include "
DNA_listBase.h
"
27
28
#include "
BLT_translation.h
"
29
30
#include "../outliner_intern.h"
31
#include "
tree_display.h
"
32
33
#include "
tree_element_driver.hh
"
34
35
namespace
blender::ed::outliner
{
36
37
TreeElementDriverBase::TreeElementDriverBase
(
TreeElement
&legacy_te,
AnimData
&anim_data)
38
:
AbstractTreeElement
(legacy_te), anim_data_(anim_data)
39
{
40
BLI_assert
(legacy_te.
store_elem
->
type
==
TSE_DRIVER_BASE
);
41
legacy_te.
name
=
IFACE_
(
"Drivers"
);
42
}
43
44
void
TreeElementDriverBase::expand
(
SpaceOutliner
&space_outliner)
const
45
{
46
ID
*lastadded =
nullptr
;
47
48
for
(
FCurve
*fcu :
blender::ListBaseWrapper<FCurve>
(anim_data_.
drivers
)) {
49
if
(fcu->driver && fcu->driver->variables.first) {
50
ChannelDriver
*driver = fcu->driver;
51
52
for
(
DriverVar
*dvar :
blender::ListBaseWrapper<DriverVar>
(driver->
variables
)) {
53
/* loop over all targets used here */
54
DRIVER_TARGETS_USED_LOOPER_BEGIN
(dvar) {
55
if
(lastadded != dtar->id) {
56
/* XXX this lastadded check is rather lame, and also fails quite badly... */
57
outliner_add_element
(
58
&space_outliner, &
legacy_te_
.
subtree
, dtar->id, &
legacy_te_
,
TSE_LINKED_OB
, 0);
59
lastadded = dtar->id;
60
}
61
}
62
DRIVER_TARGETS_LOOPER_END
;
63
}
64
}
65
}
66
}
67
68
}
// 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:56
DRIVER_TARGETS_LOOPER_END
#define DRIVER_TARGETS_LOOPER_END
Definition:
BKE_fcurve_driver.h:63
BLI_assert
#define BLI_assert(a)
Definition:
BLI_assert.h:58
BLI_listbase_wrapper.hh
BLT_translation.h
IFACE_
#define IFACE_(msgid)
Definition:
BLT_translation.h:64
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:96
TSE_DRIVER_BASE
@ TSE_DRIVER_BASE
Definition:
DNA_outliner_types.h:101
blender::ListBaseWrapper
Definition:
BLI_listbase_wrapper.hh:33
blender::ed::outliner::AbstractTreeElement
Definition:
tree_element.hh:30
blender::ed::outliner::AbstractTreeElement::legacy_te_
TreeElement & legacy_te_
Definition:
tree_element.hh:37
blender::ed::outliner::TreeElementDriverBase::TreeElementDriverBase
TreeElementDriverBase(TreeElement &legacy_te, AnimData &anim_data)
Definition:
tree_element_driver.cc:37
blender::ed::outliner::TreeElementDriverBase::expand
void expand(SpaceOutliner &space_outliner) const override
Definition:
tree_element_driver.cc:44
blender::ed::outliner
Definition:
tree_display.hh:45
outliner_add_element
TreeElement * outliner_add_element(SpaceOutliner *space_outliner, ListBase *lb, void *idv, TreeElement *parent, short type, short index)
Definition:
outliner_tree.c:832
AnimData
Definition:
DNA_anim_types.h:1083
AnimData::drivers
ListBase drivers
Definition:
DNA_anim_types.h:1112
ChannelDriver
Definition:
DNA_anim_types.h:502
ChannelDriver::variables
ListBase variables
Definition:
DNA_anim_types.h:504
DriverVar
Definition:
DNA_anim_types.h:416
FCurve
Definition:
DNA_anim_types.h:581
ID
Definition:
DNA_ID.h:273
SpaceOutliner
Definition:
DNA_space_types.h:265
TreeElement
Definition:
outliner_intern.h:77
TreeElement::subtree
ListBase subtree
Definition:
outliner_intern.h:87
TreeElement::store_elem
TreeStoreElem * store_elem
Definition:
outliner_intern.h:89
TreeElement::name
const char * name
Definition:
outliner_intern.h:94
TreeStoreElem::type
short type
Definition:
DNA_outliner_types.h:35
tree_display.h
tree_element_driver.hh
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1