Sculpt: split sculpt.c into three files
Sculpt.c is now three files: * Sculpt.c: main API methods and the brush stroke operator * Sculpt_brushes.c: Code for individual brushes. * Sculpt_ops.c: Sculpt operators other than the brush stroke operator. TODO: split brush stroke operator into a new file (sculpt_stroke.c?).
This commit is contained in:
parent
e9092110ff
commit
d93dd85951
|
@ -59,6 +59,7 @@ set(SRC
|
|||
sculpt.c
|
||||
sculpt_automasking.c
|
||||
sculpt_boundary.c
|
||||
sculpt_brushes.c
|
||||
sculpt_cloth.c
|
||||
sculpt_detail.c
|
||||
sculpt_dyntopo.c
|
||||
|
@ -71,6 +72,7 @@ set(SRC
|
|||
sculpt_mask_expand.c
|
||||
sculpt_mask_init.c
|
||||
sculpt_multiplane_scrape.c
|
||||
sculpt_ops.c
|
||||
sculpt_paint_color.c
|
||||
sculpt_pose.c
|
||||
sculpt_smooth.c
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
#include "BKE_paint.h"
|
||||
|
||||
#include "BLI_rect.h"
|
||||
#include "BLI_compiler_compat.h"
|
||||
#include "BLI_math.h"
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
|
@ -404,8 +406,61 @@ bool facemask_paint_poll(struct bContext *C);
|
|||
/**
|
||||
* Uses symm to selectively flip any axis of a coordinate.
|
||||
*/
|
||||
void flip_v3_v3(float out[3], const float in[3], const enum ePaintSymmetryFlags symm);
|
||||
void flip_qt_qt(float out[4], const float in[4], const enum ePaintSymmetryFlags symm);
|
||||
|
||||
BLI_INLINE void flip_v3_v3(float out[3], const float in[3], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
if (symm & PAINT_SYMM_X) {
|
||||
out[0] = -in[0];
|
||||
}
|
||||
else {
|
||||
out[0] = in[0];
|
||||
}
|
||||
if (symm & PAINT_SYMM_Y) {
|
||||
out[1] = -in[1];
|
||||
}
|
||||
else {
|
||||
out[1] = in[1];
|
||||
}
|
||||
if (symm & PAINT_SYMM_Z) {
|
||||
out[2] = -in[2];
|
||||
}
|
||||
else {
|
||||
out[2] = in[2];
|
||||
}
|
||||
}
|
||||
|
||||
BLI_INLINE void flip_qt_qt(float out[4], const float in[4], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
float axis[3], angle;
|
||||
|
||||
quat_to_axis_angle(axis, &angle, in);
|
||||
normalize_v3(axis);
|
||||
|
||||
if (symm & PAINT_SYMM_X) {
|
||||
axis[0] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
if (symm & PAINT_SYMM_Y) {
|
||||
axis[1] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
if (symm & PAINT_SYMM_Z) {
|
||||
axis[2] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
|
||||
axis_angle_normalized_to_quat(out, axis, angle);
|
||||
}
|
||||
|
||||
BLI_INLINE void flip_v3(float v[3], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
flip_v3_v3(v, v, symm);
|
||||
}
|
||||
|
||||
BLI_INLINE void flip_qt(float quat[4], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
flip_qt_qt(quat, quat, symm);
|
||||
}
|
||||
|
||||
/* stroke operator */
|
||||
typedef enum BrushStrokeMode {
|
||||
|
|
|
@ -397,51 +397,6 @@ static Image *imapaint_face_image(Object *ob, Mesh *me, int face_index)
|
|||
return ima;
|
||||
}
|
||||
|
||||
void flip_v3_v3(float out[3], const float in[3], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
if (symm & PAINT_SYMM_X) {
|
||||
out[0] = -in[0];
|
||||
}
|
||||
else {
|
||||
out[0] = in[0];
|
||||
}
|
||||
if (symm & PAINT_SYMM_Y) {
|
||||
out[1] = -in[1];
|
||||
}
|
||||
else {
|
||||
out[1] = in[1];
|
||||
}
|
||||
if (symm & PAINT_SYMM_Z) {
|
||||
out[2] = -in[2];
|
||||
}
|
||||
else {
|
||||
out[2] = in[2];
|
||||
}
|
||||
}
|
||||
|
||||
void flip_qt_qt(float out[4], const float in[4], const ePaintSymmetryFlags symm)
|
||||
{
|
||||
float axis[3], angle;
|
||||
|
||||
quat_to_axis_angle(axis, &angle, in);
|
||||
normalize_v3(axis);
|
||||
|
||||
if (symm & PAINT_SYMM_X) {
|
||||
axis[0] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
if (symm & PAINT_SYMM_Y) {
|
||||
axis[1] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
if (symm & PAINT_SYMM_Z) {
|
||||
axis[2] *= -1.0f;
|
||||
angle *= -1.0f;
|
||||
}
|
||||
|
||||
axis_angle_normalized_to_quat(out, axis, angle);
|
||||
}
|
||||
|
||||
void paint_sample_color(
|
||||
bContext *C, ARegion *region, int x, int y, bool texpaint_proj, bool use_palette)
|
||||
{
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -29,12 +29,12 @@
|
|||
#include "DNA_meshdata_types.h"
|
||||
#include "DNA_vec_types.h"
|
||||
|
||||
#include "BLI_bitmap.h"
|
||||
#include "BLI_gsqueue.h"
|
||||
#include "BLI_threads.h"
|
||||
|
||||
#include "BKE_paint.h"
|
||||
#include "BKE_pbvh.h"
|
||||
#include "BLI_bitmap.h"
|
||||
#include "BLI_compiler_compat.h"
|
||||
#include "BLI_gsqueue.h"
|
||||
#include "BLI_threads.h"
|
||||
|
||||
struct AutomaskingCache;
|
||||
struct KeyBlock;
|
||||
|
@ -300,6 +300,10 @@ void SCULPT_calc_brush_plane(struct Sculpt *sd,
|
|||
|
||||
void SCULPT_calc_area_normal(
|
||||
Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3]);
|
||||
void SCULPT_calc_area_normal_and_center(
|
||||
Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3], float r_area_co[3]);
|
||||
void SCULPT_calc_area_center(
|
||||
Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_co[3]);
|
||||
|
||||
int SCULPT_nearest_vertex_get(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
|
@ -1506,3 +1510,115 @@ void SCULPT_OT_dyntopo_detail_size_edit(struct wmOperatorType *ot);
|
|||
/* Dyntopo. */
|
||||
|
||||
void SCULPT_OT_dynamic_topology_toggle(struct wmOperatorType *ot);
|
||||
|
||||
/* sculpt_brushes.c */
|
||||
|
||||
float SCULPT_clay_thumb_get_stabilized_pressure(struct StrokeCache *cache);
|
||||
|
||||
void SCULPT_do_draw_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
|
||||
void SCULPT_do_fill_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_scrape_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_clay_thumb_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_flatten_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_clay_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_clay_strips_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_snake_hook_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_thumb_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_rotate_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_layer_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_inflate_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_nudge_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_crease_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_pinch_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_grab_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_elastic_deform_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_draw_sharp_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_slide_relax_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
|
||||
void SCULPT_do_displacement_smear_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_displacement_eraser_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_mask_brush_draw(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
void SCULPT_do_mask_brush(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
int totnode);
|
||||
|
||||
void SCULPT_bmesh_topology_rake(struct Sculpt *sd,
|
||||
struct Object *ob,
|
||||
struct PBVHNode **nodes,
|
||||
const int totnode,
|
||||
float bstrength);
|
||||
|
||||
/* end sculpt_brushes.c */
|
||||
|
||||
/* sculpt_ops.c */
|
||||
void SCULPT_OT_brush_stroke(struct wmOperatorType *ot);
|
||||
|
||||
/* end sculpt_ops.c */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue