return ctx_data_collection_get(C, CTX_data_selected_bases, list);
}
+int CTX_data_visible_objects(const bContext *C, ListBase *list)
+{
+ return ctx_data_collection_get(C, CTX_data_visible_objects, list);
+}
+
+int CTX_data_visible_bases(const bContext *C, ListBase *list)
+{
+ return ctx_data_collection_get(C, CTX_data_visible_bases, list);
+}
+
struct Object *CTX_data_active_object(const bContext *C)
{
return ctx_data_pointer_get(C, CTX_data_active_object);
return 1;
}
+ else if(ELEM(member, CTX_data_visible_objects, CTX_data_visible_bases)) {
+ for(base=scene->base.first; base; base=base->next) {
+ if(base->lay & v3d->lay) {
+ if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
+ if(member == CTX_data_selected_objects)
+ CTX_data_list_add(result, base->object);
+ else
+ CTX_data_list_add(result, base);
+ }
+ }
+ }
+
+ return 1;
+ }
else if(member == CTX_data_active_base) {
if(scene->basact && (scene->basact->lay & v3d->lay))
if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)
else if (mode==BA_DESELECT) {
base->flag &= ~SELECT;
}
+ base->object->flag= base->flag;
}
}
BIF_undo_push("Select Random");
}
-/* selects all objects of a particular type, on currently visible layers */
-void selectall_type(Scene *scene, View3D *v3d, short obtype)
-{
- Base *base;
-
- base= FIRSTBASE;
- while(base) {
- if((base->lay & v3d->lay) &&
- (base->object->type == obtype) &&
- (base->object->restrictflag & OB_RESTRICT_VIEW)==0
- ) {
- select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
- }
- base= base->next;
- }
-
- BIF_undo_push("Select all per type");
-}
/* selects all objects on a particular layer */
void selectall_layer(Scene *scene, unsigned int layernum)
{
(base->object->restrictflag & OB_RESTRICT_VIEW)==0
) {
select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
}
base= base->next;
}
if (base->flag & SELECT) {
if(b!=base) {
select_base_v3d(base, BA_DESELECT);
- base->object->flag= base->flag;
}
}
}
else select_base_v3d(basact, BA_SELECT);
}
- /* copy */
- basact->object->flag= basact->flag;
-
if(oldbasact != basact) {
set_active_base(scene, basact);
}
select_base_v3d(base, BA_SELECT);
else
select_base_v3d(base, BA_DESELECT);
-
- base->object->flag= base->flag;
}
col+=4; /* next color */
static int view3d_select_by_type_exec(bContext *C, wmOperator *op)
{
- ScrArea *sa= CTX_wm_area(C);
ARegion *ar= CTX_wm_region(C);
- View3D *v3d= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
short obtype;
obtype = RNA_enum_get(op->ptr, "type");
- selectall_type(scene, v3d, obtype);
+ CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+ if(base->object->type==obtype) {
+ select_base_v3d(base, BA_SELECT);
+ }
+ }
+ CTX_DATA_END;
+ /* undo? */
ED_region_tag_redraw(ar);
return OPERATOR_FINISHED;
int dx= base->sx-x;
int dy= base->sy-y;
if( dx*dx + dy*dy < radius*radius)
-
select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
}
}
}