Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-02-08 14:26:41 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-02-08 16:44:37 +0300
commita38298f4dd1673a8305abdab687fc4a16f383e5f (patch)
tree16dcf35ecc1f9133d8c8baf880bc71ea56fa0771 /source/blender/blenkernel
parentd4913af84660318047e3404f9766014cd78864ab (diff)
Bring back Lasso and Circle selection back
(and replace more instances of BaseLegacy/scene->base with Base/sl->object_bases) Still need mouse selection, box selection, and menu selection Also, there is still a problem with BA_WAS_SEL, at the moment only the objects centers are highlighted.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_scene.h3
-rw-r--r--source/blender/blenkernel/intern/scene.c44
2 files changed, 24 insertions, 23 deletions
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 53bb69aedb6..181d4b12703 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -47,6 +47,7 @@ struct QuicktimeCodecData;
struct RenderData;
struct SceneRenderLayer;
struct Scene;
+struct SceneLayer;
struct UnitSettings;
struct Main;
@@ -95,7 +96,7 @@ typedef struct SceneBaseIter {
int BKE_scene_base_iter_next(struct EvaluationContext *eval_ctx, struct SceneBaseIter *iter,
struct Scene **scene, int val, struct BaseLegacy **base, struct Object **ob);
-void BKE_scene_base_flag_to_objects(struct Scene *scene);
+void BKE_scene_base_flag_to_objects(struct SceneLayer *sl);
void BKE_scene_base_flag_from_objects(struct Scene *scene);
void BKE_scene_base_flag_sync_from_base(struct BaseLegacy *base);
void BKE_scene_base_flag_sync_from_object(struct BaseLegacy *base);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 1ce4bf8f9eb..6204a831fd9 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1746,40 +1746,24 @@ bool BKE_scene_uses_blender_game(const Scene *scene)
return STREQ(scene->r.engine, RE_engine_id_BLENDER_GAME);
}
-void BKE_scene_base_flag_to_objects(struct Scene *scene)
+void BKE_scene_base_flag_to_objects(SceneLayer *sl)
{
- BaseLegacy *base = scene->base.first;
+ Base *base = sl->object_bases.first;
while (base) {
- BKE_scene_base_flag_sync_from_base(base);
- base = base->next;
- }
-}
-
-void BKE_scene_base_flag_from_objects(struct Scene *scene)
-{
- BaseLegacy *base = scene->base.first;
-
- while (base) {
- BKE_scene_base_flag_sync_from_object(base);
+ BKE_scene_object_base_flag_sync_from_base(base);
base = base->next;
}
}
void BKE_scene_base_flag_sync_from_base(BaseLegacy *base)
{
- Object *ob = base->object;
-
- /* keep the object only flags untouched */
- int flag = ob->flag & OB_FROMGROUP;
-
- ob->flag = base->flag_legacy;
- ob->flag |= flag;
+ BKE_scene_object_base_flag_sync_from_base(base);
}
void BKE_scene_base_flag_sync_from_object(BaseLegacy *base)
{
- base->flag_legacy = base->object->flag;
+ BKE_scene_object_base_flag_sync_from_object(base);
}
void BKE_scene_object_base_flag_sync_from_base(Base *base)
@@ -1791,11 +1775,27 @@ void BKE_scene_object_base_flag_sync_from_base(Base *base)
ob->flag = base->flag;
ob->flag |= flag;
+
+ if ((base->flag & BASE_SELECTED) != 0) {
+ ob->flag |= SELECT;
+ }
+ else {
+ ob->flag &= ~SELECT;
+ }
}
void BKE_scene_object_base_flag_sync_from_object(Base *base)
{
- base->flag = base->object->flag;
+ Object *ob = base->object;
+ base->flag = ob->flag;
+
+ if ((ob->flag & SELECT) != 0) {
+ base->flag |= BASE_SELECTED;
+ BLI_assert((base->flag & BASE_SELECTABLED) != 0);
+ }
+ else {
+ base->flag &= ~BASE_SELECTED;
+ }
}
void BKE_scene_disable_color_management(Scene *scene)