Multi-Object Editing

This adds initial multi-object editing support.

- Selected objects are used when entering edit & pose modes.
- Selection & tools work on all objects however many tools need porting
  See: T54641 for remaining tasks.

Indentation will be done separately.

See patch: D3101
This commit is contained in:
2018-04-16 16:27:55 +02:00
parent 80bb4254c6
commit bfc9d426bb
58 changed files with 3786 additions and 1486 deletions

View File

@@ -51,6 +51,8 @@ void uv_poly_center(struct BMFace *f, float r_cent[2], const int cd_loop_uv_off
/* find nearest */
typedef struct UvNearestHit {
/** Only for `*_multi(..)` versions of functions. */
struct Object *ob;
/** Always set if we have a hit. */
struct BMFace *efa;
struct BMLoop *l;
@@ -66,14 +68,23 @@ typedef struct UvNearestHit {
bool uv_find_nearest_vert(
struct Scene *scene, struct Image *ima, struct Object *obedit,
const float co[2], const float penalty_dist, struct UvNearestHit *hit_final);
bool uv_find_nearest_vert_multi(
struct Scene *scene, struct Image *ima, struct Object **objects, const uint objects_len,
const float co[2], const float penalty_dist, struct UvNearestHit *hit_final);
bool uv_find_nearest_edge(
struct Scene *scene, struct Image *ima, struct Object *obedit,
const float co[2], struct UvNearestHit *hit_final);
bool uv_find_nearest_edge_multi(
struct Scene *scene, struct Image *ima, struct Object **objects, const uint objects_len,
const float co[2], struct UvNearestHit *hit_final);
bool uv_find_nearest_face(
struct Scene *scene, struct Image *ima, struct Object *obedit,
const float co[2], struct UvNearestHit *hit_final);
bool uv_find_nearest_face_multi(
struct Scene *scene, struct Image *ima, struct Object **objects, const uint objects_len,
const float co[2], struct UvNearestHit *hit_final);
/* utility tool functions */