Merge branch 'master' into blender2.8
[blender.git] / source / blender / editors / include / ED_armature.h
index 91c9a36c31f589e756550384a0e0863f38639199..a35380ca547bb57c900f0eec72dd9008b042fee6 100644 (file)
@@ -39,6 +39,7 @@ struct Base;
 struct bContext;
 struct Bone;
 struct bPoseChannel;
+struct EvaluationContext;
 struct IDProperty;
 struct ListBase;
 struct MeshDeformModifierData;
@@ -46,9 +47,11 @@ struct DerivedMesh;
 struct Object;
 struct ReportList;
 struct Scene;
+struct ViewLayer;
 struct ViewContext;
 struct wmKeyConfig;
 struct wmOperator;
+struct Main;
 
 typedef struct EditBone {
        struct EditBone *next, *prev;
@@ -85,6 +88,12 @@ typedef struct EditBone {
        
        short segments;
 
+       /* Used for display */
+       float disp_mat[4][4];  /*  in Armature space, rest pos matrix */
+       float disp_tail_mat[4][4];  /*  in Armature space, rest pos matrix */
+       /* 32 == MAX_BBONE_SUBDIV */
+       float disp_bbone_mat[32][4][4]; /*  in Armature space, rest pos matrix */
+
        /* Used to store temporary data */
        union {
                struct EditBone *ebone;
@@ -133,7 +142,8 @@ void ED_armature_deselect_all(struct Object *obedit);
 void ED_armature_deselect_all_visible(struct Object *obedit);
 
 bool ED_do_pose_selectbuffer(
-        struct Scene *scene, struct Base *base, const unsigned int *buffer, short hits,
+        const struct EvaluationContext *eval_ctx,
+        struct ViewLayer *view_layer, struct Base *base, const unsigned int *buffer, short hits,
         bool extend, bool deselect, bool toggle, bool do_nearest);
 bool ED_armature_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
 int join_armature_exec(struct bContext *C, struct wmOperator *op);
@@ -160,7 +170,7 @@ void ED_armature_ebone_from_mat3(EditBone *ebone, float mat[3][3]);
 void ED_armature_ebone_from_mat4(EditBone *ebone, float mat[4][4]);
 
 void transform_armature_mirror_update(struct Object *obedit);
-void ED_armature_origin_set(struct Scene *scene, struct Object *ob, float cursor[3], int centermode, int around);
+void ED_armature_origin_set(struct Object *ob, float cursor[3], int centermode, int around);
 
 void ED_armature_transform_bones(struct bArmature *arm, float mat[4][4], const bool do_props);
 void ED_armature_apply_transform(struct Object *ob, float mat[4][4], const bool do_props);
@@ -170,8 +180,9 @@ void ED_armature_transform(struct bArmature *arm, float mat[4][4], const bool do
 #define ARM_GROUPS_ENVELOPE 2
 #define ARM_GROUPS_AUTO     3
 
-void create_vgroups_from_armature(struct ReportList *reports, struct Scene *scene, struct Object *ob,
-                                  struct Object *par, const int mode, const bool mirror);
+void create_vgroups_from_armature(
+        struct ReportList *reports, const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Object *ob, struct Object *par, const int mode, const bool mirror);
 
 /* if bone is already in list, pass it as param to ignore it */
 void unique_editbone_name(struct ListBase *ebones, char *name, EditBone *bone);
@@ -197,7 +208,7 @@ void ED_armature_exit_posemode(struct bContext *C, struct Base *base);
 void ED_armature_enter_posemode(struct bContext *C, struct Base *base);
 void ED_pose_de_selectall(struct Object *ob, int select_mode, const bool ignore_visibility);
 void ED_pose_bone_select(struct Object *ob, struct bPoseChannel *pchan, bool select);
-void ED_pose_recalculate_paths(struct Scene *scene, struct Object *ob);
+void ED_pose_recalculate_paths(struct bContext *C, struct Scene *scene, struct Object *ob);
 struct Object *ED_pose_object_from_context(struct bContext *C);
 
 /* sketch */