Anim: remove bone groups from the outliner

Bone groups have been replaced by bone collections. The data in DNA is
there just for versioning & forward compatibility, so the UI elements are
being removed from Blender 4.0.
This commit is contained in:
Sybren A. Stüvel 2023-09-18 11:57:42 +02:00
parent 1b3141c06e
commit d7e9497a06
10 changed files with 0 additions and 160 deletions

View File

@ -78,7 +78,6 @@ set(SRC
tree/tree_element_overrides.cc
tree/tree_element_particle_system.cc
tree/tree_element_pose.cc
tree/tree_element_pose_group.cc
tree/tree_element_rna.cc
tree/tree_element_scene_objects.cc
tree/tree_element_seq.cc
@ -121,7 +120,6 @@ set(SRC
tree/tree_element_overrides.hh
tree/tree_element_particle_system.hh
tree/tree_element_pose.hh
tree/tree_element_pose_group.hh
tree/tree_element_rna.hh
tree/tree_element_scene_objects.hh
tree/tree_element_seq.hh

View File

@ -822,21 +822,6 @@ static void namebutton_fn(bContext *C, void *tsep, char *oldname)
DEG_id_tag_update(&arm->id, ID_RECALC_COPY_ON_WRITE);
break;
}
case TSE_POSEGRP: {
Object *ob = (Object *)tselem->id; /* id = object. */
bActionGroup *grp = static_cast<bActionGroup *>(te->directdata);
BLI_uniquename(&ob->pose->agroups,
grp,
CTX_DATA_(BLT_I18NCONTEXT_ID_ACTION, "Group"),
'.',
offsetof(bActionGroup, name),
sizeof(grp->name));
WM_msg_publish_rna_prop(mbus, &ob->id, grp, ActionGroup, name);
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
DEG_id_tag_update(tselem->id, ID_RECALC_COPY_ON_WRITE);
break;
}
case TSE_GP_LAYER: {
bGPdata *gpd = (bGPdata *)tselem->id; /* id = GP Datablock */
bGPDlayer *gpl = static_cast<bGPDlayer *>(te->directdata);
@ -2813,8 +2798,6 @@ TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
case TSE_R_LAYER:
data.icon = ICON_RENDER_RESULT;
break;
case TSE_POSEGRP_BASE:
case TSE_POSEGRP:
data.icon = ICON_GROUP_BONE;
break;
case TSE_SEQUENCE: {
@ -3196,7 +3179,6 @@ static void outliner_draw_iconrow(bContext *C,
TSE_BONE,
TSE_EBONE,
TSE_POSE_CHANNEL,
TSE_POSEGRP,
TSE_DEFGROUP))
{
outliner_draw_iconrow_doit(block, te, xmax, offsx, ys, alpha_fac, active, 1);

View File

@ -318,7 +318,6 @@ static void do_item_rename(ARegion *region,
TSE_MODIFIER_BASE,
TSE_DRIVER_BASE,
TSE_POSE_BASE,
TSE_POSEGRP_BASE,
TSE_R_LAYER_BASE,
TSE_SCENE_COLLECTION_BASE,
TSE_VIEW_COLLECTION_BASE,

View File

@ -506,15 +506,6 @@ static void tree_element_grease_pencil_layer_activate(bContext *C,
}
}
static void tree_element_posegroup_activate(bContext *C, TreeElement *te, TreeStoreElem *tselem)
{
Object *ob = (Object *)tselem->id;
if (ob->pose) {
ob->pose->active_group = te->index + 1;
WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob);
}
}
static void tree_element_posechannel_activate(bContext *C,
const Scene *scene,
ViewLayer *view_layer,
@ -863,8 +854,6 @@ void tree_element_type_active_set(bContext *C,
case TSE_R_LAYER:
tree_element_viewlayer_activate(C, te);
break;
case TSE_POSEGRP:
tree_element_posegroup_activate(C, te, tselem);
break;
case TSE_SEQUENCE:
tree_element_sequence_activate(C, tvc->scene, te, set);
@ -991,22 +980,6 @@ static eOLDrawState tree_element_viewlayer_state_get(const bContext *C, const Tr
return OL_DRAWSEL_NONE;
}
static eOLDrawState tree_element_posegroup_state_get(const Scene *scene,
ViewLayer *view_layer,
const TreeElement *te,
const TreeStoreElem *tselem)
{
const Object *ob = (const Object *)tselem->id;
BKE_view_layer_synced_ensure(scene, view_layer);
if (ob == BKE_view_layer_active_object_get(view_layer) && ob->pose) {
if (ob->pose->active_group == te->index + 1) {
return OL_DRAWSEL_NORMAL;
}
}
return OL_DRAWSEL_NONE;
}
static eOLDrawState tree_element_sequence_state_get(const Scene *scene, const TreeElement *te)
{
const TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
@ -1183,8 +1156,6 @@ eOLDrawState tree_element_type_active_state_get(const bContext *C,
return OL_DRAWSEL_NONE;
case TSE_R_LAYER:
return tree_element_viewlayer_state_get(C, te);
case TSE_POSEGRP:
return tree_element_posegroup_state_get(tvc->scene, tvc->view_layer, te, tselem);
case TSE_SEQUENCE:
return tree_element_sequence_state_get(tvc->scene, te);
case TSE_SEQUENCE_DUP:
@ -1389,15 +1360,6 @@ static void outliner_set_properties_tab(bContext *C, TreeElement *te, TreeStoreE
context = BCONTEXT_VIEW_LAYER;
break;
}
case TSE_POSEGRP_BASE:
case TSE_POSEGRP: {
Object *ob = (Object *)tselem->id;
bArmature *arm = static_cast<bArmature *>(ob->data);
ptr = RNA_pointer_create(&arm->id, &RNA_Armature, arm);
context = BCONTEXT_DATA;
break;
}
case TSE_LINKED_PSYS: {
Object *ob = (Object *)tselem->id;
ParticleSystem *psys = psys_get_current(ob);

View File

@ -334,9 +334,6 @@ TreeElement *AbstractTreeDisplay::add_element(ListBase *lb,
else if (ELEM(type, TSE_POSE_BASE, TSE_POSE_CHANNEL)) {
/* pass */
}
else if (ELEM(type, TSE_POSEGRP, TSE_POSEGRP_BASE)) {
/* pass */
}
else if (ELEM(type, TSE_R_LAYER, TSE_R_LAYER_BASE)) {
/* pass */
}

View File

@ -38,7 +38,6 @@
#include "tree_element_overrides.hh"
#include "tree_element_particle_system.hh"
#include "tree_element_pose.hh"
#include "tree_element_pose_group.hh"
#include "tree_element_rna.hh"
#include "tree_element_scene_objects.hh"
#include "tree_element_seq.hh"
@ -176,13 +175,6 @@ std::unique_ptr<AbstractTreeElement> AbstractTreeElement::create_from_type(const
return std::make_unique<TreeElementPoseChannel>(legacy_te,
*reinterpret_cast<Object *>(owner_id),
*static_cast<bPoseChannel *>(create_data));
case TSE_POSEGRP_BASE:
return std::make_unique<TreeElementPoseGroupBase>(legacy_te,
*reinterpret_cast<Object *>(owner_id));
case TSE_POSEGRP:
return std::make_unique<TreeElementPoseGroup>(legacy_te,
*reinterpret_cast<Object *>(owner_id),
*static_cast<bActionGroup *>(create_data));
case TSE_MODIFIER_BASE:
return std::make_unique<TreeElementModifierBase>(legacy_te,
*reinterpret_cast<Object *>(owner_id));

View File

@ -64,11 +64,6 @@ void TreeElementIDObject::expand_pose() const
return;
}
add_element(&legacy_te_.subtree, &object_.id, nullptr, &legacy_te_, TSE_POSE_BASE, 0);
/* Pose Groups */
if (!BLI_listbase_is_empty(&object_.pose->agroups)) {
add_element(&legacy_te_.subtree, &object_.id, nullptr, &legacy_te_, TSE_POSEGRP_BASE, 0);
}
}
void TreeElementIDObject::expand_materials() const

View File

@ -1,48 +0,0 @@
/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup spoutliner
*/
#include "DNA_action_types.h"
#include "DNA_object_types.h"
#include "DNA_outliner_types.h"
#include "BLI_listbase.h"
#include "BLT_translation.h"
#include "../outliner_intern.hh"
#include "tree_element_pose_group.hh"
namespace blender::ed::outliner {
TreeElementPoseGroupBase::TreeElementPoseGroupBase(TreeElement &legacy_te, Object &object)
: AbstractTreeElement(legacy_te), object_(object)
{
BLI_assert(legacy_te.store_elem->type == TSE_POSEGRP_BASE);
legacy_te.name = IFACE_("Bone Groups");
}
void TreeElementPoseGroupBase::expand(SpaceOutliner & /*space_outliner*/) const
{
int index;
LISTBASE_FOREACH_INDEX (bActionGroup *, agrp, &object_.pose->agroups, index) {
add_element(&legacy_te_.subtree, &object_.id, agrp, &legacy_te_, TSE_POSEGRP, index);
}
}
TreeElementPoseGroup::TreeElementPoseGroup(TreeElement &legacy_te,
Object & /* object */,
bActionGroup &agrp)
: AbstractTreeElement(legacy_te), /* object_(object), */ agrp_(agrp)
{
BLI_assert(legacy_te.store_elem->type == TSE_POSEGRP);
legacy_te.name = agrp_.name;
legacy_te.directdata = &agrp_;
}
} // namespace blender::ed::outliner

View File

@ -1,35 +0,0 @@
/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup spoutliner
*/
#pragma once
#include "tree_element.hh"
struct Object;
struct bActionGroup;
namespace blender::ed::outliner {
class TreeElementPoseGroupBase final : public AbstractTreeElement {
Object &object_;
public:
TreeElementPoseGroupBase(TreeElement &legacy_te, Object &object);
void expand(SpaceOutliner &) const override;
};
class TreeElementPoseGroup final : public AbstractTreeElement {
/* Not needed right now, avoid unused member variable warning. */
// Object &object_;
bActionGroup &agrp_;
public:
TreeElementPoseGroup(TreeElement &legacy_te, Object &object, bActionGroup &agrp);
};
} // namespace blender::ed::outliner

View File

@ -89,8 +89,6 @@ typedef enum eTreeStoreElemType {
/* TSE_LINKED_MAT = 22, */
/* NOTE: is used for light group. */
/* TSE_LINKED_LAMP = 23, */
TSE_POSEGRP_BASE = 24,
TSE_POSEGRP = 25,
TSE_SEQUENCE = 26, /* NO ID */
TSE_SEQ_STRIP = 27, /* NO ID */
TSE_SEQUENCE_DUP = 28, /* NO ID */