forked from bartvdbraak/blender
accident when merge. revert to r37405
This commit is contained in:
commit
12f0795d49
@ -53,17 +53,8 @@ if(NOT DEFINED PYTHON_INCLUDE_DIRS)
|
|||||||
if(NOT _Found_PYTHON_H)
|
if(NOT _Found_PYTHON_H)
|
||||||
message(FATAL_ERROR "Python.h not found")
|
message(FATAL_ERROR "Python.h not found")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
unset(_Found_PYTHON_H)
|
|
||||||
unset(_Python_HEADER)
|
|
||||||
unset(_CURRENT_ABI_FLAGS)
|
|
||||||
unset(_CURRENT_PATH)
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
unset(_Python_ABI_FLAGS)
|
|
||||||
unset(_Python_PATHS)
|
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# now the python versions are found
|
# now the python versions are found
|
||||||
|
|
||||||
|
@ -5,25 +5,14 @@
|
|||||||
# use it instead of include_directories()
|
# use it instead of include_directories()
|
||||||
macro(blender_include_dirs
|
macro(blender_include_dirs
|
||||||
includes)
|
includes)
|
||||||
set(_ALL_INCS "")
|
|
||||||
foreach(_INC ${ARGV})
|
foreach(inc ${ARGV})
|
||||||
get_filename_component(_ABS_INC ${_INC} ABSOLUTE)
|
get_filename_component(abs_inc ${inc} ABSOLUTE)
|
||||||
list(APPEND _ALL_INCS ${_ABS_INC})
|
list(APPEND all_incs ${abs_inc})
|
||||||
endforeach()
|
endforeach()
|
||||||
include_directories(${_ALL_INCS})
|
include_directories(${all_incs})
|
||||||
unset(_INC)
|
|
||||||
unset(_ABS_INC)
|
|
||||||
unset(_ALL_INCS)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
set(_ALL_INCS "")
|
|
||||||
foreach(_INC ${ARGV})
|
|
||||||
get_filename_component(_ABS_INC ${_INC} ABSOLUTE)
|
|
||||||
list(APPEND _ALL_INCS ${_ABS_INC})
|
|
||||||
include_directories(SYSTEM ${_ALL_INCS})
|
|
||||||
unset(_INC)
|
|
||||||
unset(_ABS_INC)
|
|
||||||
unset(_ALL_INCS)
|
|
||||||
|
|
||||||
macro(blender_source_group
|
macro(blender_source_group
|
||||||
sources)
|
sources)
|
||||||
@ -31,17 +20,14 @@ macro(blender_source_group
|
|||||||
# Group by location on disk
|
# Group by location on disk
|
||||||
source_group("Source Files" FILES CMakeLists.txt)
|
source_group("Source Files" FILES CMakeLists.txt)
|
||||||
|
|
||||||
foreach(_SRC ${sources})
|
foreach(SRC ${sources})
|
||||||
get_filename_component(_SRC_EXT ${_SRC} EXT)
|
get_filename_component(SRC_EXT ${SRC} EXT)
|
||||||
if(${_SRC_EXT} MATCHES ".h" OR ${_SRC_EXT} MATCHES ".hpp")
|
if(${SRC_EXT} MATCHES ".h" OR ${SRC_EXT} MATCHES ".hpp")
|
||||||
source_group("Header Files" FILES ${_SRC})
|
source_group("Header Files" FILES ${SRC})
|
||||||
else()
|
else()
|
||||||
source_group("Source Files" FILES ${_SRC})
|
source_group("Source Files" FILES ${SRC})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
unset(_SRC)
|
|
||||||
unset(_SRC_EXT)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
@ -197,11 +183,10 @@ macro(setup_liblinks
|
|||||||
endif()
|
endif()
|
||||||
if(WITH_IMAGE_OPENEXR)
|
if(WITH_IMAGE_OPENEXR)
|
||||||
if(WIN32 AND NOT UNIX)
|
if(WIN32 AND NOT UNIX)
|
||||||
foreach(_LOOP_VAR ${OPENEXR_LIB})
|
foreach(loop_var ${OPENEXR_LIB})
|
||||||
target_link_libraries(${target} debug ${_LOOP_VAR}_d)
|
target_link_libraries(${target} debug ${loop_var}_d)
|
||||||
target_link_libraries(${target} optimized ${_LOOP_VAR})
|
target_link_libraries(${target} optimized ${loop_var})
|
||||||
endforeach()
|
endforeach()
|
||||||
unset(_LOOP_VAR)
|
|
||||||
else()
|
else()
|
||||||
target_link_libraries(${target} ${OPENEXR_LIB})
|
target_link_libraries(${target} ${OPENEXR_LIB})
|
||||||
endif()
|
endif()
|
||||||
@ -214,11 +199,10 @@ macro(setup_liblinks
|
|||||||
endif()
|
endif()
|
||||||
if(WITH_OPENCOLLADA)
|
if(WITH_OPENCOLLADA)
|
||||||
if(WIN32 AND NOT UNIX)
|
if(WIN32 AND NOT UNIX)
|
||||||
foreach(_LOOP_VAR ${OPENCOLLADA_LIB})
|
foreach(loop_var ${OPENCOLLADA_LIB})
|
||||||
target_link_libraries(${target} debug ${_LOOP_VAR}_d)
|
target_link_libraries(${target} debug ${loop_var}_d)
|
||||||
target_link_libraries(${target} optimized ${_LOOP_VAR})
|
target_link_libraries(${target} optimized ${loop_var})
|
||||||
endforeach()
|
endforeach()
|
||||||
unset(_LOOP_VAR)
|
|
||||||
target_link_libraries(${target} debug ${PCRE_LIB}_d)
|
target_link_libraries(${target} debug ${PCRE_LIB}_d)
|
||||||
target_link_libraries(${target} optimized ${PCRE_LIB})
|
target_link_libraries(${target} optimized ${PCRE_LIB})
|
||||||
if(EXPAT_LIB)
|
if(EXPAT_LIB)
|
||||||
@ -475,13 +459,4 @@ macro(blender_project_hack_post)
|
|||||||
|
|
||||||
unset(_reset_standard_cflags_rel)
|
unset(_reset_standard_cflags_rel)
|
||||||
unset(_reset_standard_cxxflags_rel)
|
unset(_reset_standard_cxxflags_rel)
|
||||||
|
|
||||||
# --------------------------------------------------
|
|
||||||
# workaround for omission in cmake 2.8.4's GNU.cmake
|
|
||||||
if(CMAKE_COMPILER_IS_GNUCC)
|
|
||||||
if(NOT DARWIN)
|
|
||||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -37,11 +37,6 @@ def is_dict(obj):
|
|||||||
return hasattr(obj, 'keys') and hasattr(getattr(obj, 'keys'), '__call__')
|
return hasattr(obj, 'keys') and hasattr(getattr(obj, 'keys'), '__call__')
|
||||||
|
|
||||||
|
|
||||||
def is_struct_seq(obj):
|
|
||||||
"""Returns whether obj is a structured sequence subclass: sys.float_info"""
|
|
||||||
return isinstance(obj, tuple) and hasattr(obj, 'n_fields')
|
|
||||||
|
|
||||||
|
|
||||||
def complete_names(word, namespace):
|
def complete_names(word, namespace):
|
||||||
"""Complete variable names or attributes
|
"""Complete variable names or attributes
|
||||||
|
|
||||||
@ -179,7 +174,7 @@ def complete(word, namespace, private=True):
|
|||||||
if type(obj) in (bool, float, int, str):
|
if type(obj) in (bool, float, int, str):
|
||||||
return []
|
return []
|
||||||
# an extra char '[', '(' or '.' will be added
|
# an extra char '[', '(' or '.' will be added
|
||||||
if hasattr(obj, '__getitem__') and not is_struct_seq(obj):
|
if hasattr(obj, '__getitem__'):
|
||||||
# list or dictionary
|
# list or dictionary
|
||||||
matches = complete_indices(word, namespace, obj)
|
matches = complete_indices(word, namespace, obj)
|
||||||
elif hasattr(obj, '__call__'):
|
elif hasattr(obj, '__call__'):
|
||||||
|
@ -80,7 +80,7 @@ def get_console(console_id):
|
|||||||
if console_data:
|
if console_data:
|
||||||
console, stdout, stderr = console_data
|
console, stdout, stderr = console_data
|
||||||
|
|
||||||
# XXX, bug in python 3.1.2, 3.2 ? (worked in 3.1.1)
|
# XXX, bug in python 3.1.2 ? (worked in 3.1.1)
|
||||||
# seems there is no way to clear StringIO objects for writing, have to make new ones each time.
|
# seems there is no way to clear StringIO objects for writing, have to make new ones each time.
|
||||||
import io
|
import io
|
||||||
stdout = io.StringIO()
|
stdout = io.StringIO()
|
||||||
|
@ -99,9 +99,8 @@ class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel):
|
|||||||
split.prop(mesh, "show_double_sided")
|
split.prop(mesh, "show_double_sided")
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel):
|
class DATA_PT_settings(MeshButtonsPanel, bpy.types.Panel):
|
||||||
bl_label = "Texture Space"
|
bl_label = "Settings"
|
||||||
bl_options = {'DEFAULT_CLOSED'}
|
|
||||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
|
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
@ -110,13 +109,8 @@ class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel):
|
|||||||
mesh = context.mesh
|
mesh = context.mesh
|
||||||
|
|
||||||
layout.prop(mesh, "texture_mesh")
|
layout.prop(mesh, "texture_mesh")
|
||||||
|
|
||||||
layout.separator()
|
|
||||||
|
|
||||||
layout.prop(mesh, "use_auto_texspace")
|
layout.prop(mesh, "use_auto_texspace")
|
||||||
row = layout.row()
|
|
||||||
row.column().prop(mesh, "texspace_location", text="Location")
|
|
||||||
row.column().prop(mesh, "texspace_size", text="Size")
|
|
||||||
|
|
||||||
class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel):
|
class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel):
|
||||||
bl_label = "Vertex Groups"
|
bl_label = "Vertex Groups"
|
||||||
|
@ -71,10 +71,6 @@ class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel):
|
|||||||
layout.label(text="Update:")
|
layout.label(text="Update:")
|
||||||
layout.prop(mball, "update_method", expand=True)
|
layout.prop(mball, "update_method", expand=True)
|
||||||
|
|
||||||
row = layout.row()
|
|
||||||
row.column().prop(mball, "texspace_location")
|
|
||||||
row.column().prop(mball, "texspace_size")
|
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
|
class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
|
||||||
bl_label = "Active Element"
|
bl_label = "Active Element"
|
||||||
|
@ -483,10 +483,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
|||||||
col.label(text="Mode:")
|
col.label(text="Mode:")
|
||||||
col.prop(md, "wrap_method", text="")
|
col.prop(md, "wrap_method", text="")
|
||||||
|
|
||||||
if md.wrap_method == 'PROJECT':
|
|
||||||
split = layout.split(percentage=0.25)
|
split = layout.split(percentage=0.25)
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
|
|
||||||
|
if md.wrap_method == 'PROJECT':
|
||||||
col.label(text="Axis:")
|
col.label(text="Axis:")
|
||||||
col.prop(md, "use_project_x")
|
col.prop(md, "use_project_x")
|
||||||
col.prop(md, "use_project_y")
|
col.prop(md, "use_project_y")
|
||||||
@ -498,6 +499,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(md, "use_positive_direction")
|
col.prop(md, "use_positive_direction")
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
|
|
||||||
col.label(text="Cull Faces:")
|
col.label(text="Cull Faces:")
|
||||||
col.prop(md, "cull_face", expand=True)
|
col.prop(md, "cull_face", expand=True)
|
||||||
|
|
||||||
|
@ -254,7 +254,8 @@ class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(rd, "use_compositing")
|
col.prop(rd, "use_compositing")
|
||||||
col.prop(rd, "use_sequencer")
|
col.prop(rd, "use_sequencer")
|
||||||
|
|
||||||
split.prop(rd, "dither_intensity", text="Dither", slider=True)
|
col = split.column()
|
||||||
|
col.prop(rd, "dither_intensity", text="Dither", slider=True)
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
|
|
||||||
|
@ -180,6 +180,7 @@ static void clean_paths(Main *main)
|
|||||||
BLI_bpathIterator_free(bpi);
|
BLI_bpathIterator_free(bpi);
|
||||||
|
|
||||||
for(scene= main->scene.first; scene; scene= scene->id.next) {
|
for(scene= main->scene.first; scene; scene= scene->id.next) {
|
||||||
|
BLI_clean(scene->r.backbuf);
|
||||||
BLI_clean(scene->r.pic);
|
BLI_clean(scene->r.pic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -475,7 +475,8 @@ Scene *add_scene(const char *name)
|
|||||||
sce->audio.doppler_factor = 1.0;
|
sce->audio.doppler_factor = 1.0;
|
||||||
sce->audio.speed_of_sound = 343.3;
|
sce->audio.speed_of_sound = 343.3;
|
||||||
|
|
||||||
BLI_strncpy(sce->r.pic, U.renderdir, sizeof(sce->r.pic));
|
strcpy(sce->r.backbuf, "//backbuf");
|
||||||
|
strcpy(sce->r.pic, U.renderdir);
|
||||||
|
|
||||||
BLI_init_rctf(&sce->r.safety, 0.1f, 0.9f, 0.1f, 0.9f);
|
BLI_init_rctf(&sce->r.safety, 0.1f, 0.9f, 0.1f, 0.9f);
|
||||||
sce->r.osa= 8;
|
sce->r.osa= 8;
|
||||||
|
@ -71,9 +71,8 @@ void PE_undo_push(struct Scene *scene, const char *str);
|
|||||||
void PE_undo_step(struct Scene *scene, int step);
|
void PE_undo_step(struct Scene *scene, int step);
|
||||||
void PE_undo(struct Scene *scene);
|
void PE_undo(struct Scene *scene);
|
||||||
void PE_redo(struct Scene *scene);
|
void PE_redo(struct Scene *scene);
|
||||||
|
void PE_undo_menu(struct Scene *scene, struct Object *ob);
|
||||||
int PE_undo_valid(struct Scene *scene);
|
int PE_undo_valid(struct Scene *scene);
|
||||||
void PE_undo_number(struct Scene *scene, int nr);
|
|
||||||
char *PE_undo_get_name(struct Scene *scene, int nr, int *active);
|
|
||||||
|
|
||||||
#endif /* ED_PARTICLE_H */
|
#endif /* ED_PARTICLE_H */
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ struct uiHandleButtonData;
|
|||||||
struct wmEvent;
|
struct wmEvent;
|
||||||
struct wmOperatorType;
|
struct wmOperatorType;
|
||||||
struct wmWindow;
|
struct wmWindow;
|
||||||
struct wmTimer;
|
|
||||||
struct uiStyle;
|
struct uiStyle;
|
||||||
struct uiWidgetColors;
|
struct uiWidgetColors;
|
||||||
struct uiLayout;
|
struct uiLayout;
|
||||||
@ -109,7 +108,7 @@ typedef enum {
|
|||||||
|
|
||||||
/* uiBut->flag */
|
/* uiBut->flag */
|
||||||
#define UI_SELECT 1 /* use when the button is pressed */
|
#define UI_SELECT 1 /* use when the button is pressed */
|
||||||
#define UI_SCROLLED 2 /* temp hidden, scrolled away */
|
/*#define UI_MOUSE_OVER 2*/ /*UNUSED, free flag*/
|
||||||
#define UI_ACTIVE 4
|
#define UI_ACTIVE 4
|
||||||
#define UI_HAS_ICON 8
|
#define UI_HAS_ICON 8
|
||||||
#define UI_TEXTINPUT 16
|
#define UI_TEXTINPUT 16
|
||||||
@ -117,8 +116,8 @@ typedef enum {
|
|||||||
/* warn: rest of uiBut->flag in UI_interface.h */
|
/* warn: rest of uiBut->flag in UI_interface.h */
|
||||||
|
|
||||||
/* internal panel drawing defines */
|
/* internal panel drawing defines */
|
||||||
#define PNL_GRID (UI_UNIT_Y / 5) /* 4 default */
|
#define PNL_GRID 4
|
||||||
#define PNL_HEADER UI_UNIT_Y /* 20 default */
|
#define PNL_HEADER 20
|
||||||
|
|
||||||
/* panel->flag */
|
/* panel->flag */
|
||||||
#define PNL_SELECT 1
|
#define PNL_SELECT 1
|
||||||
@ -370,7 +369,7 @@ extern void ui_convert_to_unit_alt_name(uiBut *but, char *str, int maxlen);
|
|||||||
extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str);
|
extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str);
|
||||||
extern int ui_get_but_string_max_length(uiBut *but);
|
extern int ui_get_but_string_max_length(uiBut *but);
|
||||||
|
|
||||||
extern void ui_set_but_default(struct bContext *C, short all);
|
extern void ui_set_but_default(struct bContext *C, uiBut *but, short all);
|
||||||
|
|
||||||
extern void ui_set_but_soft_range(uiBut *but, double value);
|
extern void ui_set_but_soft_range(uiBut *but, double value);
|
||||||
|
|
||||||
@ -397,8 +396,6 @@ struct uiPopupBlockHandle {
|
|||||||
void (*cancel_func)(void *arg);
|
void (*cancel_func)(void *arg);
|
||||||
void *popup_arg;
|
void *popup_arg;
|
||||||
|
|
||||||
struct wmTimer *scrolltimer;
|
|
||||||
|
|
||||||
/* for operator popups */
|
/* for operator popups */
|
||||||
struct wmOperatorType *optype;
|
struct wmOperatorType *optype;
|
||||||
int opcontext;
|
int opcontext;
|
||||||
@ -419,11 +416,9 @@ void ui_block_func_ICONTEXTROW(struct bContext *C, uiLayout *layout, void *arg_b
|
|||||||
struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
|
struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
|
||||||
void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
|
void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
|
||||||
|
|
||||||
uiBut *ui_popup_menu_memory(struct uiBlock *block, struct uiBut *but);
|
uiBut *ui_popup_menu_memory(uiBlock *block, uiBut *but);
|
||||||
|
|
||||||
float *ui_block_hsv_get(struct uiBlock *block);
|
|
||||||
void ui_popup_block_scrolltest(struct uiBlock *block);
|
|
||||||
|
|
||||||
|
float *ui_block_hsv_get(uiBlock *block);
|
||||||
|
|
||||||
/* searchbox for string button */
|
/* searchbox for string button */
|
||||||
ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
|
ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
|
||||||
@ -486,11 +481,6 @@ void ui_widget_color_init(struct ThemeUI *tui);
|
|||||||
void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
|
void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
|
||||||
void ui_draw_preview_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
|
void ui_draw_preview_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
|
||||||
|
|
||||||
extern unsigned char checker_stipple_sml[];
|
|
||||||
/* used for transp checkers */
|
|
||||||
#define UI_TRANSP_DARK 100
|
|
||||||
#define UI_TRANSP_LIGHT 160
|
|
||||||
|
|
||||||
/* interface_style.c */
|
/* interface_style.c */
|
||||||
void uiStyleInit(void);
|
void uiStyleInit(void);
|
||||||
|
|
||||||
|
@ -174,14 +174,14 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode)
|
|||||||
PropertyRNA *prop;
|
PropertyRNA *prop;
|
||||||
|
|
||||||
/* note: this property gets hidden for add-camera operator */
|
/* note: this property gets hidden for add-camera operator */
|
||||||
RNA_def_boolean(ot->srna, "view_align", 0, "Align to View", "Align the new object to the view");
|
RNA_def_boolean(ot->srna, "view_align", 0, "Align to View", "Align the new object to the view.");
|
||||||
|
|
||||||
if(do_editmode) {
|
if(do_editmode) {
|
||||||
prop= RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object");
|
prop= RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object.");
|
||||||
RNA_def_property_flag(prop, PROP_HIDDEN);
|
RNA_def_property_flag(prop, PROP_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object", -FLT_MAX, FLT_MAX);
|
RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX);
|
||||||
RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX);
|
RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX);
|
||||||
|
|
||||||
prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", "");
|
prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", "");
|
||||||
@ -637,7 +637,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op)
|
|||||||
else DAG_id_tag_update(&obedit->id, OB_RECALC_DATA);
|
else DAG_id_tag_update(&obedit->id, OB_RECALC_DATA);
|
||||||
|
|
||||||
if(obedit==NULL) {
|
if(obedit==NULL) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "Cannot create editmode armature");
|
BKE_report(op->reports, RPT_ERROR, "Cannot create editmode armature.");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1382,7 +1382,7 @@ static int convert_exec(bContext *C, wmOperator *op)
|
|||||||
void OBJECT_OT_convert(wmOperatorType *ot)
|
void OBJECT_OT_convert(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
ot->name= "Convert to";
|
ot->name= "Convert";
|
||||||
ot->description = "Convert selected objects to another type";
|
ot->description = "Convert selected objects to another type";
|
||||||
ot->idname= "OBJECT_OT_convert";
|
ot->idname= "OBJECT_OT_convert";
|
||||||
|
|
||||||
@ -1395,8 +1395,8 @@ void OBJECT_OT_convert(wmOperatorType *ot)
|
|||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
|
|
||||||
/* properties */
|
/* properties */
|
||||||
ot->prop= RNA_def_enum(ot->srna, "target", convert_target_items, OB_MESH, "Target", "Type of object to convert to");
|
ot->prop= RNA_def_enum(ot->srna, "target", convert_target_items, OB_MESH, "Target", "Type of object to convert to.");
|
||||||
RNA_def_boolean(ot->srna, "keep_original", 0, "Keep Original", "Keep original objects instead of replacing them");
|
RNA_def_boolean(ot->srna, "keep_original", 0, "Keep Original", "Keep original objects instead of replacing them.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************** Duplicate ************************/
|
/**************************** Duplicate ************************/
|
||||||
@ -1716,7 +1716,7 @@ void OBJECT_OT_duplicate(wmOperatorType *ot)
|
|||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
|
|
||||||
/* to give to transform */
|
/* to give to transform */
|
||||||
RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data");
|
RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data.");
|
||||||
prop= RNA_def_enum(ot->srna, "mode", transform_mode_types, TFM_TRANSLATION, "Mode", "");
|
prop= RNA_def_enum(ot->srna, "mode", transform_mode_types, TFM_TRANSLATION, "Mode", "");
|
||||||
RNA_def_property_flag(prop, PROP_HIDDEN);
|
RNA_def_property_flag(prop, PROP_HIDDEN);
|
||||||
}
|
}
|
||||||
@ -1786,8 +1786,8 @@ void OBJECT_OT_add_named(wmOperatorType *ot)
|
|||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
|
|
||||||
RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data");
|
RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data.");
|
||||||
RNA_def_string(ot->srna, "name", "Cube", 24, "Name", "Object name to add");
|
RNA_def_string(ot->srna, "name", "Cube", 24, "Name", "Object name to add.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1812,11 +1812,11 @@ static int join_exec(bContext *C, wmOperator *op)
|
|||||||
Object *ob= CTX_data_active_object(C);
|
Object *ob= CTX_data_active_object(C);
|
||||||
|
|
||||||
if(scene->obedit) {
|
if(scene->obedit) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode");
|
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
else if(object_data_is_libdata(ob)) {
|
else if(object_data_is_libdata(ob)) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata");
|
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1865,11 +1865,11 @@ static int join_shapes_exec(bContext *C, wmOperator *op)
|
|||||||
Object *ob= CTX_data_active_object(C);
|
Object *ob= CTX_data_active_object(C);
|
||||||
|
|
||||||
if(scene->obedit) {
|
if(scene->obedit) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode");
|
BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode.");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
else if(object_data_is_libdata(ob)) {
|
else if(object_data_is_libdata(ob)) {
|
||||||
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata");
|
BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata.");
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,9 +203,9 @@ static int object_shape_key_mirror(bContext *C, Object *ob)
|
|||||||
fp1= ((float *)kb->data) + i1*3;
|
fp1= ((float *)kb->data) + i1*3;
|
||||||
fp2= ((float *)kb->data) + i2*3;
|
fp2= ((float *)kb->data) + i2*3;
|
||||||
|
|
||||||
copy_v3_v3(tvec, fp1);
|
VECCOPY(tvec, fp1);
|
||||||
copy_v3_v3(fp1, fp2);
|
VECCOPY(fp1, fp2);
|
||||||
copy_v3_v3(fp2, tvec);
|
VECCOPY(fp2, tvec);
|
||||||
|
|
||||||
/* flip x axis */
|
/* flip x axis */
|
||||||
fp1[0] = -fp1[0];
|
fp1[0] = -fp1[0];
|
||||||
@ -217,46 +217,7 @@ static int object_shape_key_mirror(bContext *C, Object *ob)
|
|||||||
|
|
||||||
mesh_octree_table(ob, NULL, NULL, 'e');
|
mesh_octree_table(ob, NULL, NULL, 'e');
|
||||||
}
|
}
|
||||||
else if (ob->type == OB_LATTICE) {
|
/* todo, other types? */
|
||||||
Lattice *lt= ob->data;
|
|
||||||
int i1, i2;
|
|
||||||
float *fp1, *fp2;
|
|
||||||
int u, v, w;
|
|
||||||
/* half but found up odd value */
|
|
||||||
const int pntsu_half = (((lt->pntsu / 2) + (lt->pntsu % 2))) ;
|
|
||||||
|
|
||||||
/* currently editmode isnt supported by mesh so
|
|
||||||
* ignore here for now too */
|
|
||||||
|
|
||||||
/* if(lt->editlatt) lt= lt->editlatt->latt; */
|
|
||||||
|
|
||||||
for(w=0; w<lt->pntsw; w++) {
|
|
||||||
for(v=0; v<lt->pntsv; v++) {
|
|
||||||
for(u=0; u<pntsu_half; u++) {
|
|
||||||
int u_inv= (lt->pntsu - 1) - u;
|
|
||||||
float tvec[3];
|
|
||||||
if(u == u_inv) {
|
|
||||||
i1= LT_INDEX(lt, u, v, w);
|
|
||||||
fp1= ((float *)kb->data) + i1*3;
|
|
||||||
fp1[0]= -fp1[0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
i1= LT_INDEX(lt, u, v, w);
|
|
||||||
i2= LT_INDEX(lt, u_inv, v, w);
|
|
||||||
|
|
||||||
fp1= ((float *)kb->data) + i1*3;
|
|
||||||
fp2= ((float *)kb->data) + i2*3;
|
|
||||||
|
|
||||||
copy_v3_v3(tvec, fp1);
|
|
||||||
copy_v3_v3(fp1, fp2);
|
|
||||||
copy_v3_v3(fp2, tvec);
|
|
||||||
fp1[0]= -fp1[0];
|
|
||||||
fp2[0]= -fp2[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MEM_freeN(tag_elem);
|
MEM_freeN(tag_elem);
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,6 @@
|
|||||||
static void vgroup_remap_update_users(Object *ob, int *map);
|
static void vgroup_remap_update_users(Object *ob, int *map);
|
||||||
static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *defgroup);
|
static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *defgroup);
|
||||||
static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg);
|
static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg);
|
||||||
static void vgroup_delete_all(Object *ob);
|
|
||||||
|
|
||||||
static Lattice *vgroup_edit_lattice(Object *ob)
|
static Lattice *vgroup_edit_lattice(Object *ob)
|
||||||
{
|
{
|
||||||
@ -139,30 +138,22 @@ void ED_vgroup_delete(Object *ob, bDeformGroup *defgroup)
|
|||||||
vgroup_delete_object_mode(ob, dg);
|
vgroup_delete_object_mode(ob, dg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ED_vgroup_data_create(ID *id)
|
void ED_vgroup_data_create(ID *id)
|
||||||
{
|
{
|
||||||
/* create deform verts */
|
/* create deform verts */
|
||||||
|
|
||||||
if(GS(id->name)==ID_ME) {
|
if(GS(id->name)==ID_ME) {
|
||||||
Mesh *me= (Mesh *)id;
|
Mesh *me= (Mesh *)id;
|
||||||
me->dvert= CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert);
|
me->dvert= CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert);
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
else if(GS(id->name)==ID_LT) {
|
else if(GS(id->name)==ID_LT) {
|
||||||
Lattice *lt= (Lattice *)id;
|
Lattice *lt= (Lattice *)id;
|
||||||
lt->dvert= MEM_callocN(sizeof(MDeformVert)*lt->pntsu*lt->pntsv*lt->pntsw, "lattice deformVert");
|
lt->dvert= MEM_callocN(sizeof(MDeformVert)*lt->pntsu*lt->pntsv*lt->pntsw, "lattice deformVert");
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot)
|
static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot)
|
||||||
{
|
{
|
||||||
*dvert_tot = 0;
|
|
||||||
*dvert_arr = NULL;
|
|
||||||
|
|
||||||
if(id) {
|
if(id) {
|
||||||
switch(GS(id->name)) {
|
switch(GS(id->name)) {
|
||||||
case ID_ME:
|
case ID_ME:
|
||||||
@ -175,6 +166,8 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT)) {
|
if (!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT)) {
|
||||||
|
*dvert_tot = 0;
|
||||||
|
*dvert_arr = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,10 +195,9 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
case ID_LT:
|
case ID_LT:
|
||||||
{
|
{
|
||||||
int i=0;
|
int i=0;
|
||||||
@ -230,6 +222,8 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*dvert_arr= NULL;
|
||||||
|
*dvert_tot= 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,24 +265,13 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from)
|
|||||||
int i;
|
int i;
|
||||||
int totdef_from= BLI_countlist(&ob_from->defbase);
|
int totdef_from= BLI_countlist(&ob_from->defbase);
|
||||||
int totdef= BLI_countlist(&ob->defbase);
|
int totdef= BLI_countlist(&ob->defbase);
|
||||||
short new_vgroup= FALSE;
|
|
||||||
|
|
||||||
ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from);
|
ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from);
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot);
|
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot);
|
||||||
|
|
||||||
if((dvert_array == NULL) && (dvert_array_from != NULL) && ED_vgroup_data_create(ob->data)) {
|
|
||||||
ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot);
|
|
||||||
new_vgroup= TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ob==ob_from || dvert_tot==0 || (dvert_tot != dvert_tot_from) || dvert_array_from==NULL || dvert_array==NULL) {
|
if(ob==ob_from || dvert_tot==0 || (dvert_tot != dvert_tot_from) || dvert_array_from==NULL || dvert_array==NULL) {
|
||||||
if (dvert_array) MEM_freeN(dvert_array);
|
if (dvert_array) MEM_freeN(dvert_array);
|
||||||
if (dvert_array_from) MEM_freeN(dvert_array_from);
|
if (dvert_array_from) MEM_freeN(dvert_array_from);
|
||||||
|
|
||||||
if(new_vgroup == TRUE) {
|
|
||||||
/* free the newly added vgroup since it wasn't compatible */
|
|
||||||
vgroup_delete_all(ob);
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1032,15 +1015,35 @@ static void vgroup_clean_all(Object *ob, float eul, int keep_single)
|
|||||||
if (dvert_array) MEM_freeN(dvert_array);
|
if (dvert_array) MEM_freeN(dvert_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ED_vgroup_mirror(Object *ob, int mirror_weights, int flip_vgroups)
|
||||||
static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|
||||||
const char sel, const char sel_mirr,
|
|
||||||
const int *flip_map,
|
|
||||||
const short mirror_weights, const short flip_vgroups)
|
|
||||||
{
|
{
|
||||||
BLI_assert(sel || sel_mirr);
|
EditVert *eve, *eve_mirr;
|
||||||
|
MDeformVert *dvert, *dvert_mirr;
|
||||||
|
int *flip_map;
|
||||||
|
|
||||||
if(sel_mirr && sel) {
|
if(mirror_weights==0 && flip_vgroups==0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* only the active group */
|
||||||
|
if(ob->type == OB_MESH) {
|
||||||
|
Mesh *me= ob->data;
|
||||||
|
EditMesh *em = BKE_mesh_get_editmesh(me);
|
||||||
|
|
||||||
|
EM_cache_x_mirror_vert(ob, em);
|
||||||
|
|
||||||
|
if(!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT))
|
||||||
|
return;
|
||||||
|
|
||||||
|
flip_map= defgroup_flip_map(ob, 0);
|
||||||
|
|
||||||
|
/* Go through the list of editverts and assign them */
|
||||||
|
for(eve=em->verts.first; eve; eve=eve->next){
|
||||||
|
if((eve_mirr=eve->tmp.v)) {
|
||||||
|
if((eve_mirr->f & SELECT || eve->f & SELECT) && (eve != eve_mirr)) {
|
||||||
|
dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
|
||||||
|
dvert_mirr= CustomData_em_get(&em->vdata, eve_mirr->data, CD_MDEFORMVERT);
|
||||||
|
if(dvert && dvert_mirr) {
|
||||||
|
if(eve_mirr->f & SELECT && eve->f & SELECT) {
|
||||||
/* swap */
|
/* swap */
|
||||||
if(mirror_weights)
|
if(mirror_weights)
|
||||||
SWAP(MDeformVert, *dvert, *dvert_mirr);
|
SWAP(MDeformVert, *dvert, *dvert_mirr);
|
||||||
@ -1051,7 +1054,7 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* dvert should always be the target */
|
/* dvert should always be the target */
|
||||||
if(sel_mirr) {
|
if(eve_mirr->f & SELECT) {
|
||||||
SWAP(MDeformVert *, dvert, dvert_mirr);
|
SWAP(MDeformVert *, dvert, dvert_mirr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1061,46 +1064,6 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr,
|
|||||||
defvert_flip(dvert, flip_map);
|
defvert_flip(dvert, flip_map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_vgroups)
|
|
||||||
{
|
|
||||||
#define VGROUP_MIRR_OP dvert_mirror_op(dvert, dvert_mirr, sel, sel_mirr, flip_map, mirror_weights, flip_vgroups)
|
|
||||||
|
|
||||||
EditVert *eve, *eve_mirr;
|
|
||||||
MDeformVert *dvert, *dvert_mirr;
|
|
||||||
short sel, sel_mirr;
|
|
||||||
int *flip_map;
|
|
||||||
|
|
||||||
if(mirror_weights==0 && flip_vgroups==0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
flip_map= defgroup_flip_map(ob, 0);
|
|
||||||
|
|
||||||
/* only the active group */
|
|
||||||
if(ob->type == OB_MESH) {
|
|
||||||
Mesh *me= ob->data;
|
|
||||||
EditMesh *em = BKE_mesh_get_editmesh(me);
|
|
||||||
|
|
||||||
|
|
||||||
if(!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT)) {
|
|
||||||
MEM_freeN(flip_map);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
EM_cache_x_mirror_vert(ob, em);
|
|
||||||
|
|
||||||
/* Go through the list of editverts and assign them */
|
|
||||||
for(eve=em->verts.first; eve; eve=eve->next){
|
|
||||||
if((eve_mirr=eve->tmp.v)) {
|
|
||||||
sel= eve->f & SELECT;
|
|
||||||
sel_mirr= eve_mirr->f & SELECT;
|
|
||||||
|
|
||||||
if((sel || sel_mirr) && (eve != eve_mirr)) {
|
|
||||||
dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
|
|
||||||
dvert_mirr= CustomData_em_get(&em->vdata, eve_mirr->data, CD_MDEFORMVERT);
|
|
||||||
if(dvert && dvert_mirr) {
|
|
||||||
VGROUP_MIRR_OP;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1108,58 +1071,10 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MEM_freeN(flip_map);
|
||||||
|
|
||||||
BKE_mesh_end_editmesh(me, em);
|
BKE_mesh_end_editmesh(me, em);
|
||||||
}
|
}
|
||||||
else if (ob->type == OB_LATTICE) {
|
|
||||||
Lattice *lt= ob->data;
|
|
||||||
int i1, i2;
|
|
||||||
int u, v, w;
|
|
||||||
int pntsu_half;
|
|
||||||
/* half but found up odd value */
|
|
||||||
|
|
||||||
if(lt->editlatt) lt= lt->editlatt->latt;
|
|
||||||
|
|
||||||
if(lt->pntsu == 1 || lt->dvert == NULL) {
|
|
||||||
MEM_freeN(flip_map);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* unlike editmesh we know that by only looping over the first hald of
|
|
||||||
* the 'u' indicies it will cover all points except the middle which is
|
|
||||||
* ok in this case */
|
|
||||||
pntsu_half= lt->pntsu / 2;
|
|
||||||
|
|
||||||
for(w=0; w<lt->pntsw; w++) {
|
|
||||||
for(v=0; v<lt->pntsv; v++) {
|
|
||||||
for(u=0; u<pntsu_half; u++) {
|
|
||||||
int u_inv= (lt->pntsu - 1) - u;
|
|
||||||
if(u != u_inv) {
|
|
||||||
BPoint *bp, *bp_mirr;
|
|
||||||
|
|
||||||
i1= LT_INDEX(lt, u, v, w);
|
|
||||||
i2= LT_INDEX(lt, u_inv, v, w);
|
|
||||||
|
|
||||||
bp= <->def[i1];
|
|
||||||
bp_mirr= <->def[i2];
|
|
||||||
|
|
||||||
sel= bp->f1 & SELECT;
|
|
||||||
sel_mirr= bp_mirr->f1 & SELECT;
|
|
||||||
|
|
||||||
if(sel || sel_mirr) {
|
|
||||||
dvert= <->dvert[i1];
|
|
||||||
dvert_mirr= <->dvert[i2];
|
|
||||||
|
|
||||||
VGROUP_MIRR_OP;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MEM_freeN(flip_map);
|
|
||||||
|
|
||||||
#undef VGROUP_MIRR_OP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vgroup_remap_update_users(Object *ob, int *map)
|
static void vgroup_remap_update_users(Object *ob, int *map)
|
||||||
@ -2005,25 +1920,17 @@ void OBJECT_OT_vertex_group_copy_to_linked(wmOperatorType *ot)
|
|||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vertex_group_copy_to_selected_exec(bContext *C, wmOperator *op)
|
static int vertex_group_copy_to_selected_exec(bContext *C, wmOperator *UNUSED(op))
|
||||||
{
|
{
|
||||||
Object *obact= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
|
Object *obact= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
|
||||||
int change= 0;
|
|
||||||
int fail= 0;
|
|
||||||
|
|
||||||
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects)
|
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects)
|
||||||
{
|
{
|
||||||
if(obact != ob) {
|
if(obact != ob)
|
||||||
if(ED_vgroup_copy_array(ob, obact)) change++;
|
ED_vgroup_copy_array(ob, obact);
|
||||||
else fail++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
CTX_DATA_END;
|
CTX_DATA_END;
|
||||||
|
|
||||||
if((change == 0 && fail == 0) || fail) {
|
|
||||||
BKE_reportf(op->reports, RPT_ERROR, "Copy to VGroups to Selected warning done %d, failed %d, object data must have matching indicies", change, fail);
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3970,6 +3970,18 @@ int PE_undo_valid(Scene *scene)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void PTCacheUndo_number(Scene *scene, PTCacheEdit *edit, int nr)
|
||||||
|
{
|
||||||
|
PTCacheUndo *undo;
|
||||||
|
int a=1;
|
||||||
|
|
||||||
|
for(undo= edit->undo.first; undo; undo= undo->next, a++) {
|
||||||
|
if(a==nr) break;
|
||||||
|
}
|
||||||
|
edit->curundo= undo;
|
||||||
|
PE_undo_step(scene, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void PTCacheUndo_clear(PTCacheEdit *edit)
|
static void PTCacheUndo_clear(PTCacheEdit *edit)
|
||||||
{
|
{
|
||||||
PTCacheUndo *undo;
|
PTCacheUndo *undo;
|
||||||
@ -3995,38 +4007,32 @@ void PE_redo(Scene *scene)
|
|||||||
PE_undo_step(scene, -1);
|
PE_undo_step(scene, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PE_undo_number(Scene *scene, int nr)
|
void PE_undo_menu(Scene *scene, Object *ob)
|
||||||
{
|
{
|
||||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||||
PTCacheUndo *undo;
|
PTCacheUndo *undo;
|
||||||
int a=0;
|
DynStr *ds;
|
||||||
|
short event=0;
|
||||||
|
char *menu;
|
||||||
|
|
||||||
for(undo= edit->undo.first; undo; undo= undo->next, a++) {
|
if(!edit) return;
|
||||||
if(a==nr) break;
|
|
||||||
|
ds= BLI_dynstr_new();
|
||||||
|
|
||||||
|
BLI_dynstr_append(ds, "Particlemode Undo History %t");
|
||||||
|
|
||||||
|
for(undo= edit->undo.first; undo; undo= undo->next) {
|
||||||
|
BLI_dynstr_append(ds, "|");
|
||||||
|
BLI_dynstr_append(ds, undo->name);
|
||||||
}
|
}
|
||||||
edit->curundo= undo;
|
|
||||||
PE_undo_step(scene, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
menu= BLI_dynstr_get_cstring(ds);
|
||||||
|
BLI_dynstr_free(ds);
|
||||||
|
|
||||||
/* get name of undo item, return null if no item with this index */
|
// XXX event= pupmenu_col(menu, 20);
|
||||||
/* if active pointer, set it to 1 if true */
|
MEM_freeN(menu);
|
||||||
char *PE_undo_get_name(Scene *scene, int nr, int *active)
|
|
||||||
{
|
|
||||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
|
||||||
PTCacheUndo *undo;
|
|
||||||
|
|
||||||
if(active) *active= 0;
|
if(event>0) PTCacheUndo_number(scene, edit, event);
|
||||||
|
|
||||||
if(edit) {
|
|
||||||
undo= BLI_findlink(&edit->undo, nr);
|
|
||||||
if(undo) {
|
|
||||||
if(active && undo==edit->curundo)
|
|
||||||
*active= 1;
|
|
||||||
return undo->name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************ utilities ******************************/
|
/************************ utilities ******************************/
|
||||||
|
@ -184,7 +184,8 @@ void render_view_open(bContext *C, int mx, int my)
|
|||||||
area_was_image = 1;
|
area_was_image = 1;
|
||||||
|
|
||||||
/* this function returns with changed context */
|
/* this function returns with changed context */
|
||||||
sa= ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_IMAGE);
|
ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_IMAGE);
|
||||||
|
sa= CTX_wm_area(C);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!sa) {
|
if(!sa) {
|
||||||
|
@ -3692,27 +3692,15 @@ static void do_projectpaint_draw(ProjPaintState *ps, ProjPixel *projPixel, float
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_projectpaint_draw_f(ProjPaintState *ps, ProjPixel *projPixel, float *rgba, float alpha, float mask, int use_color_correction) {
|
static void do_projectpaint_draw_f(ProjPaintState *ps, ProjPixel *projPixel, float *rgba, float alpha, float mask) {
|
||||||
if (ps->is_texbrush) {
|
if (ps->is_texbrush) {
|
||||||
/* rgba already holds a texture result here from higher level function */
|
rgba[0] *= ps->brush->rgb[0];
|
||||||
float rgba_br[3];
|
rgba[1] *= ps->brush->rgb[1];
|
||||||
if(use_color_correction){
|
rgba[2] *= ps->brush->rgb[2];
|
||||||
srgb_to_linearrgb_v3_v3(rgba_br, ps->brush->rgb);
|
|
||||||
mul_v3_v3(rgba, rgba_br);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
mul_v3_v3(rgba, ps->brush->rgb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(use_color_correction){
|
|
||||||
srgb_to_linearrgb_v3_v3(rgba, ps->brush->rgb);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
VECCOPY(rgba, ps->brush->rgb);
|
VECCOPY(rgba, ps->brush->rgb);
|
||||||
}
|
}
|
||||||
rgba[3] = 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ps->is_airbrush==0 && mask < 1.0f) {
|
if (ps->is_airbrush==0 && mask < 1.0f) {
|
||||||
IMB_blend_color_float(projPixel->newColor.f, projPixel->newColor.f, rgba, alpha, ps->blend);
|
IMB_blend_color_float(projPixel->newColor.f, projPixel->newColor.f, rgba, alpha, ps->blend);
|
||||||
@ -3748,7 +3736,6 @@ static void *do_projectpaint_thread(void *ph_v)
|
|||||||
float falloff;
|
float falloff;
|
||||||
int bucket_index;
|
int bucket_index;
|
||||||
int is_floatbuf = 0;
|
int is_floatbuf = 0;
|
||||||
int use_color_correction = 0;
|
|
||||||
const short tool = ps->tool;
|
const short tool = ps->tool;
|
||||||
rctf bucket_bounds;
|
rctf bucket_bounds;
|
||||||
|
|
||||||
@ -3854,7 +3841,6 @@ static void *do_projectpaint_thread(void *ph_v)
|
|||||||
|
|
||||||
last_projIma->touch = 1;
|
last_projIma->touch = 1;
|
||||||
is_floatbuf = last_projIma->ibuf->rect_float ? 1 : 0;
|
is_floatbuf = last_projIma->ibuf->rect_float ? 1 : 0;
|
||||||
use_color_correction = (last_projIma->ibuf->profile == IB_PROFILE_LINEAR_RGB) ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
last_partial_redraw_cell = last_projIma->partRedrawRect + projPixel->bb_cell_index;
|
last_partial_redraw_cell = last_projIma->partRedrawRect + projPixel->bb_cell_index;
|
||||||
@ -3885,7 +3871,7 @@ static void *do_projectpaint_thread(void *ph_v)
|
|||||||
else do_projectpaint_smear(ps, projPixel, alpha, mask, smearArena, &smearPixels, co);
|
else do_projectpaint_smear(ps, projPixel, alpha, mask, smearArena, &smearPixels, co);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (is_floatbuf) do_projectpaint_draw_f(ps, projPixel, rgba, alpha, mask, use_color_correction);
|
if (is_floatbuf) do_projectpaint_draw_f(ps, projPixel, rgba, alpha, mask);
|
||||||
else do_projectpaint_draw(ps, projPixel, rgba, alpha, mask);
|
else do_projectpaint_draw(ps, projPixel, rgba, alpha, mask);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4001,7 +3987,7 @@ static int project_paint_sub_stroke(ProjPaintState *ps, BrushPainter *painter, c
|
|||||||
// we may want to use this later
|
// we may want to use this later
|
||||||
// brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0);
|
// brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0);
|
||||||
|
|
||||||
if (brush_painter_paint(painter, project_paint_op, pos, time, pressure, ps, 0)) {
|
if (brush_painter_paint(painter, project_paint_op, pos, time, pressure, ps)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else return 0;
|
else return 0;
|
||||||
@ -4072,6 +4058,7 @@ static void imapaint_dirty_region(Image *ima, ImBuf *ibuf, int x, int y, int w,
|
|||||||
static void imapaint_image_update(SpaceImage *sima, Image *image, ImBuf *ibuf, short texpaint)
|
static void imapaint_image_update(SpaceImage *sima, Image *image, ImBuf *ibuf, short texpaint)
|
||||||
{
|
{
|
||||||
if(ibuf->rect_float)
|
if(ibuf->rect_float)
|
||||||
|
/* TODO - should just update a portion from imapaintpartial! */
|
||||||
ibuf->userflags |= IB_RECT_INVALID; /* force recreate of char rect */
|
ibuf->userflags |= IB_RECT_INVALID; /* force recreate of char rect */
|
||||||
|
|
||||||
if(ibuf->mipmap[0])
|
if(ibuf->mipmap[0])
|
||||||
@ -4268,8 +4255,8 @@ static ImBuf *imapaint_lift_clone(ImBuf *ibuf, ImBuf *ibufb, int *pos)
|
|||||||
|
|
||||||
static void imapaint_convert_brushco(ImBuf *ibufb, float *pos, int *ipos)
|
static void imapaint_convert_brushco(ImBuf *ibufb, float *pos, int *ipos)
|
||||||
{
|
{
|
||||||
ipos[0]= (int)floorf((pos[0] - ibufb->x/2) + 1.0f);
|
ipos[0]= (int)(pos[0] - ibufb->x/2);
|
||||||
ipos[1]= (int)floorf((pos[1] - ibufb->y/2) + 1.0f);
|
ipos[1]= (int)(pos[1] - ibufb->y/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* dosnt run for projection painting
|
/* dosnt run for projection painting
|
||||||
@ -4422,7 +4409,7 @@ static int imapaint_paint_sub_stroke(ImagePaintState *s, BrushPainter *painter,
|
|||||||
|
|
||||||
brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0);
|
brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0);
|
||||||
|
|
||||||
if (brush_painter_paint(painter, imapaint_paint_op, pos, time, pressure, s, ibuf->profile == IB_PROFILE_LINEAR_RGB)) {
|
if (brush_painter_paint(painter, imapaint_paint_op, pos, time, pressure, s)) {
|
||||||
if (update)
|
if (update)
|
||||||
imapaint_image_update(s->sima, image, ibuf, texpaint);
|
imapaint_image_update(s->sima, image, ibuf, texpaint);
|
||||||
return 1;
|
return 1;
|
||||||
@ -4876,7 +4863,12 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
PointerRNA itemptr;
|
PointerRNA itemptr;
|
||||||
float pressure, mousef[2];
|
float pressure, mousef[2];
|
||||||
double time;
|
double time;
|
||||||
int tablet;
|
int tablet, mouse[2];
|
||||||
|
|
||||||
|
// XXX +1 matches brush location better but
|
||||||
|
// still not exact, find out why and fix ..
|
||||||
|
mouse[0]= event->mval[0] + 1;
|
||||||
|
mouse[1]= event->mval[1] + 1;
|
||||||
|
|
||||||
time= PIL_check_seconds_timer();
|
time= PIL_check_seconds_timer();
|
||||||
|
|
||||||
@ -4896,8 +4888,8 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
pressure= pop->prev_pressure ? pop->prev_pressure : 1.0f;
|
pressure= pop->prev_pressure ? pop->prev_pressure : 1.0f;
|
||||||
|
|
||||||
if(pop->first) {
|
if(pop->first) {
|
||||||
pop->prevmouse[0]= event->mval[0];
|
pop->prevmouse[0]= mouse[0];
|
||||||
pop->prevmouse[1]= event->mval[1];
|
pop->prevmouse[1]= mouse[1];
|
||||||
pop->starttime= time;
|
pop->starttime= time;
|
||||||
|
|
||||||
/* special exception here for too high pressure values on first touch in
|
/* special exception here for too high pressure values on first touch in
|
||||||
@ -4916,8 +4908,8 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
/* fill in stroke */
|
/* fill in stroke */
|
||||||
RNA_collection_add(op->ptr, "stroke", &itemptr);
|
RNA_collection_add(op->ptr, "stroke", &itemptr);
|
||||||
|
|
||||||
mousef[0] = (float)(event->mval[0]);
|
mousef[0] = (float)(mouse[0]);
|
||||||
mousef[1] = (float)(event->mval[1]);
|
mousef[1] = (float)(mouse[1]);
|
||||||
RNA_float_set_array(&itemptr, "mouse", mousef);
|
RNA_float_set_array(&itemptr, "mouse", mousef);
|
||||||
RNA_float_set(&itemptr, "time", (float)(time - pop->starttime));
|
RNA_float_set(&itemptr, "time", (float)(time - pop->starttime));
|
||||||
RNA_float_set(&itemptr, "pressure", pressure);
|
RNA_float_set(&itemptr, "pressure", pressure);
|
||||||
@ -5020,45 +5012,31 @@ static int get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy)
|
|||||||
|
|
||||||
static void brush_drawcursor(bContext *C, int x, int y, void *UNUSED(customdata))
|
static void brush_drawcursor(bContext *C, int x, int y, void *UNUSED(customdata))
|
||||||
{
|
{
|
||||||
#define PX_SIZE_FADE_MAX 12.0f
|
|
||||||
#define PX_SIZE_FADE_MIN 4.0f
|
|
||||||
|
|
||||||
Brush *brush= image_paint_brush(C);
|
Brush *brush= image_paint_brush(C);
|
||||||
Paint *paint= paint_get_active(CTX_data_scene(C));
|
Paint *paint= paint_get_active(CTX_data_scene(C));
|
||||||
|
|
||||||
if(paint && brush && paint->flags & PAINT_SHOW_BRUSH) {
|
if(paint && brush) {
|
||||||
float zoomx, zoomy;
|
float zoomx, zoomy;
|
||||||
const float size= (float)brush_size(brush);
|
|
||||||
const short use_zoom= get_imapaint_zoom(C, &zoomx, &zoomy);
|
|
||||||
const float pixel_size= MAX2(size * zoomx, size * zoomy);
|
|
||||||
float alpha= 0.5f;
|
|
||||||
|
|
||||||
/* fade out the brush (cheap trick to work around brush interfearing with sampling [#])*/
|
if(!(paint->flags & PAINT_SHOW_BRUSH))
|
||||||
if(pixel_size < PX_SIZE_FADE_MIN) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
else if (pixel_size < PX_SIZE_FADE_MAX) {
|
|
||||||
alpha *= (pixel_size - PX_SIZE_FADE_MIN) / (PX_SIZE_FADE_MAX - PX_SIZE_FADE_MIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
||||||
glTranslatef((float)x, (float)y, 0.0f);
|
glTranslatef((float)x, (float)y, 0.0f);
|
||||||
|
|
||||||
if(use_zoom)
|
if(get_imapaint_zoom(C, &zoomx, &zoomy))
|
||||||
glScalef(zoomx, zoomy, 1.0f);
|
glScalef(zoomx, zoomy, 1.0f);
|
||||||
|
|
||||||
glColor4f(brush->add_col[0], brush->add_col[1], brush->add_col[2], alpha);
|
glColor4f(brush->add_col[0], brush->add_col[1], brush->add_col[2], 0.5f);
|
||||||
glEnable( GL_LINE_SMOOTH );
|
glEnable( GL_LINE_SMOOTH );
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glutil_draw_lined_arc(0, (float)(M_PI*2.0), size, 40);
|
glutil_draw_lined_arc(0, (float)(M_PI*2.0), (float)brush_size(brush), 40);
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
glDisable( GL_LINE_SMOOTH );
|
glDisable( GL_LINE_SMOOTH );
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
}
|
}
|
||||||
#undef PX_SIZE_FADE_MAX
|
|
||||||
#undef PX_SIZE_FADE_MIN
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void toggle_paint_cursor(bContext *C, int enable)
|
static void toggle_paint_cursor(bContext *C, int enable)
|
||||||
|
@ -65,7 +65,6 @@ int paint_space_stroke_enabled(struct Brush *br);
|
|||||||
|
|
||||||
int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
|
int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
|
||||||
int paint_stroke_exec(struct bContext *C, struct wmOperator *op);
|
int paint_stroke_exec(struct bContext *C, struct wmOperator *op);
|
||||||
int paint_stroke_cancel(struct bContext *C, struct wmOperator *op);
|
|
||||||
struct ViewContext *paint_stroke_view_context(struct PaintStroke *stroke);
|
struct ViewContext *paint_stroke_view_context(struct PaintStroke *stroke);
|
||||||
void *paint_stroke_mode_data(struct PaintStroke *stroke);
|
void *paint_stroke_mode_data(struct PaintStroke *stroke);
|
||||||
void paint_stroke_set_mode_data(struct PaintStroke *stroke, void *mode_data);
|
void paint_stroke_set_mode_data(struct PaintStroke *stroke, void *mode_data);
|
||||||
|
@ -916,19 +916,6 @@ int paint_stroke_exec(bContext *C, wmOperator *op)
|
|||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int paint_stroke_cancel(bContext *C, wmOperator *op)
|
|
||||||
{
|
|
||||||
PaintStroke *stroke = op->customdata;
|
|
||||||
|
|
||||||
if(stroke->done)
|
|
||||||
stroke->done(C, stroke);
|
|
||||||
|
|
||||||
MEM_freeN(stroke);
|
|
||||||
op->customdata = NULL;
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
ViewContext *paint_stroke_view_context(PaintStroke *stroke)
|
ViewContext *paint_stroke_view_context(PaintStroke *stroke)
|
||||||
{
|
{
|
||||||
return &stroke->vc;
|
return &stroke->vc;
|
||||||
|
@ -301,7 +301,7 @@ static void wpaint_mirror_vgroup_ensure(Object *ob, int *vgroup_mirror)
|
|||||||
flip_side_name(name, defgroup->name, FALSE);
|
flip_side_name(name, defgroup->name, FALSE);
|
||||||
|
|
||||||
if(strcmp(name, defgroup->name) != 0) {
|
if(strcmp(name, defgroup->name) != 0) {
|
||||||
for (curdef= ob->defbase.first, mirrdef= 0; curdef; curdef=curdef->next, mirrdef++) {
|
for (curdef= ob->defbase.first, mirrdef; curdef; curdef=curdef->next, mirrdef++) {
|
||||||
if (!strcmp(curdef->name, name)) {
|
if (!strcmp(curdef->name, name)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1600,13 +1600,6 @@ static int wpaint_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
return OPERATOR_RUNNING_MODAL;
|
return OPERATOR_RUNNING_MODAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wpaint_cancel(bContext *C, wmOperator *op)
|
|
||||||
{
|
|
||||||
paint_stroke_cancel(C, op);
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PAINT_OT_weight_paint(wmOperatorType *ot)
|
void PAINT_OT_weight_paint(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1619,7 +1612,6 @@ void PAINT_OT_weight_paint(wmOperatorType *ot)
|
|||||||
ot->modal= paint_stroke_modal;
|
ot->modal= paint_stroke_modal;
|
||||||
/* ot->exec= vpaint_exec; <-- needs stroke property */
|
/* ot->exec= vpaint_exec; <-- needs stroke property */
|
||||||
ot->poll= weight_paint_poll;
|
ot->poll= weight_paint_poll;
|
||||||
ot->cancel= wpaint_cancel;
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
||||||
@ -1900,13 +1892,6 @@ static int vpaint_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
return OPERATOR_RUNNING_MODAL;
|
return OPERATOR_RUNNING_MODAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vpaint_cancel(bContext *C, wmOperator *op)
|
|
||||||
{
|
|
||||||
paint_stroke_cancel(C, op);
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PAINT_OT_vertex_paint(wmOperatorType *ot)
|
void PAINT_OT_vertex_paint(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
@ -1918,7 +1903,6 @@ void PAINT_OT_vertex_paint(wmOperatorType *ot)
|
|||||||
ot->modal= paint_stroke_modal;
|
ot->modal= paint_stroke_modal;
|
||||||
/* ot->exec= vpaint_exec; <-- needs stroke property */
|
/* ot->exec= vpaint_exec; <-- needs stroke property */
|
||||||
ot->poll= vertex_paint_poll;
|
ot->poll= vertex_paint_poll;
|
||||||
ot->cancel= vpaint_cancel;
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
||||||
|
@ -3559,24 +3559,6 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op)
|
|||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sculpt_brush_stroke_cancel(bContext *C, wmOperator *op)
|
|
||||||
{
|
|
||||||
Object *ob= CTX_data_active_object(C);
|
|
||||||
SculptSession *ss = ob->sculpt;
|
|
||||||
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
|
|
||||||
|
|
||||||
paint_stroke_cancel(C, op);
|
|
||||||
|
|
||||||
if(ss->cache) {
|
|
||||||
sculpt_cache_free(ss->cache);
|
|
||||||
ss->cache = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
sculpt_brush_exit_tex(sd);
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SCULPT_OT_brush_stroke(wmOperatorType *ot)
|
static void SCULPT_OT_brush_stroke(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
static EnumPropertyItem stroke_mode_items[] = {
|
static EnumPropertyItem stroke_mode_items[] = {
|
||||||
@ -3595,7 +3577,6 @@ static void SCULPT_OT_brush_stroke(wmOperatorType *ot)
|
|||||||
ot->modal= paint_stroke_modal;
|
ot->modal= paint_stroke_modal;
|
||||||
ot->exec= sculpt_brush_stroke_exec;
|
ot->exec= sculpt_brush_stroke_exec;
|
||||||
ot->poll= sculpt_poll;
|
ot->poll= sculpt_poll;
|
||||||
ot->cancel= sculpt_brush_stroke_cancel;
|
|
||||||
|
|
||||||
/* flags (sculpt does own undo? (ton) */
|
/* flags (sculpt does own undo? (ton) */
|
||||||
ot->flag= OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_BLOCKING;
|
||||||
|
@ -556,20 +556,20 @@ static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, Image
|
|||||||
/* menu buts */
|
/* menu buts */
|
||||||
if(render_slot) {
|
if(render_slot) {
|
||||||
strp= slot_menu();
|
strp= slot_menu();
|
||||||
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu1, UI_UNIT_Y, render_slot, 0,0,0,0, "Select Slot");
|
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu1, 20, render_slot, 0,0,0,0, "Select Slot");
|
||||||
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
||||||
MEM_freeN(strp);
|
MEM_freeN(strp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rr) {
|
if(rr) {
|
||||||
strp= layer_menu(rr, &iuser->layer);
|
strp= layer_menu(rr, &iuser->layer);
|
||||||
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu2, UI_UNIT_Y, &iuser->layer, 0,0,0,0, "Select Layer");
|
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu2, 20, &iuser->layer, 0,0,0,0, "Select Layer");
|
||||||
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
||||||
MEM_freeN(strp);
|
MEM_freeN(strp);
|
||||||
|
|
||||||
rl= BLI_findlink(&rr->layers, iuser->layer - (rr->rectf?1:0)); /* fake compo layer, return NULL is meant to be */
|
rl= BLI_findlink(&rr->layers, iuser->layer - (rr->rectf?1:0)); /* fake compo layer, return NULL is meant to be */
|
||||||
strp= pass_menu(rl, &iuser->pass);
|
strp= pass_menu(rl, &iuser->pass);
|
||||||
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu3, UI_UNIT_Y, &iuser->pass, 0,0,0,0, "Select Pass");
|
but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu3, 20, &iuser->pass, 0,0,0,0, "Select Pass");
|
||||||
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
uiButSetFunc(but, image_multi_cb, rr, iuser);
|
||||||
MEM_freeN(strp);
|
MEM_freeN(strp);
|
||||||
}
|
}
|
||||||
|
@ -1086,13 +1086,6 @@ static int snode_bg_viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
return OPERATOR_RUNNING_MODAL;
|
return OPERATOR_RUNNING_MODAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snode_bg_viewmove_cancel(bContext *UNUSED(C), wmOperator *op)
|
|
||||||
{
|
|
||||||
MEM_freeN(op->customdata);
|
|
||||||
op->customdata= NULL;
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NODE_OT_backimage_move(wmOperatorType *ot)
|
void NODE_OT_backimage_move(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
@ -1105,7 +1098,6 @@ void NODE_OT_backimage_move(wmOperatorType *ot)
|
|||||||
ot->invoke= snode_bg_viewmove_invoke;
|
ot->invoke= snode_bg_viewmove_invoke;
|
||||||
ot->modal= snode_bg_viewmove_modal;
|
ot->modal= snode_bg_viewmove_modal;
|
||||||
ot->poll= composite_node_active;
|
ot->poll= composite_node_active;
|
||||||
ot->cancel= snode_bg_viewmove_cancel;
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_BLOCKING;
|
||||||
@ -1392,14 +1384,6 @@ static int node_resize_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
|
return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int node_resize_cancel(bContext *UNUSED(C), wmOperator *op)
|
|
||||||
{
|
|
||||||
MEM_freeN(op->customdata);
|
|
||||||
op->customdata= NULL;
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NODE_OT_resize(wmOperatorType *ot)
|
void NODE_OT_resize(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
@ -1410,7 +1394,6 @@ void NODE_OT_resize(wmOperatorType *ot)
|
|||||||
ot->invoke= node_resize_invoke;
|
ot->invoke= node_resize_invoke;
|
||||||
ot->modal= node_resize_modal;
|
ot->modal= node_resize_modal;
|
||||||
ot->poll= ED_operator_node_active;
|
ot->poll= ED_operator_node_active;
|
||||||
ot->cancel= node_resize_cancel;
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_BLOCKING;
|
||||||
@ -2296,18 +2279,6 @@ static int node_link_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int node_link_cancel(bContext *C, wmOperator *op)
|
|
||||||
{
|
|
||||||
SpaceNode *snode= CTX_wm_space_node(C);
|
|
||||||
bNodeLinkDrag *nldrag= op->customdata;
|
|
||||||
|
|
||||||
nodeRemLink(snode->edittree, nldrag->link);
|
|
||||||
BLI_remlink(&snode->linkdrag, nldrag);
|
|
||||||
MEM_freeN(nldrag);
|
|
||||||
|
|
||||||
return OPERATOR_CANCELLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NODE_OT_link(wmOperatorType *ot)
|
void NODE_OT_link(wmOperatorType *ot)
|
||||||
{
|
{
|
||||||
/* identifiers */
|
/* identifiers */
|
||||||
@ -2319,7 +2290,6 @@ void NODE_OT_link(wmOperatorType *ot)
|
|||||||
ot->modal= node_link_modal;
|
ot->modal= node_link_modal;
|
||||||
// ot->exec= node_link_exec;
|
// ot->exec= node_link_exec;
|
||||||
ot->poll= ED_operator_node_active;
|
ot->poll= ED_operator_node_active;
|
||||||
ot->cancel= node_link_cancel;
|
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING;
|
||||||
@ -2432,7 +2402,6 @@ void NODE_OT_links_cut(wmOperatorType *ot)
|
|||||||
ot->invoke= WM_gesture_lines_invoke;
|
ot->invoke= WM_gesture_lines_invoke;
|
||||||
ot->modal= WM_gesture_lines_modal;
|
ot->modal= WM_gesture_lines_modal;
|
||||||
ot->exec= cut_links_exec;
|
ot->exec= cut_links_exec;
|
||||||
ot->cancel= WM_gesture_lines_cancel;
|
|
||||||
|
|
||||||
ot->poll= ED_operator_node_active;
|
ot->poll= ED_operator_node_active;
|
||||||
|
|
||||||
|
@ -1557,7 +1557,7 @@ static void restore_localviewdata(ScrArea *sa, int free)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void endlocalview(Main *bmain, Scene *scene, ScrArea *sa)
|
static void endlocalview(Scene *scene, ScrArea *sa)
|
||||||
{
|
{
|
||||||
View3D *v3d= sa->spacedata.first;
|
View3D *v3d= sa->spacedata.first;
|
||||||
struct Base *base;
|
struct Base *base;
|
||||||
@ -1583,8 +1583,6 @@ static void endlocalview(Main *bmain, Scene *scene, ScrArea *sa)
|
|||||||
base->object->lay= base->lay;
|
base->object->lay= base->lay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DAG_on_visible_update(bmain, FALSE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1593,7 +1591,7 @@ static int localview_exec(bContext *C, wmOperator *UNUSED(unused))
|
|||||||
View3D *v3d= CTX_wm_view3d(C);
|
View3D *v3d= CTX_wm_view3d(C);
|
||||||
|
|
||||||
if(v3d->localvd)
|
if(v3d->localvd)
|
||||||
endlocalview(CTX_data_main(C), CTX_data_scene(C), CTX_wm_area(C));
|
endlocalview(CTX_data_scene(C), CTX_wm_area(C));
|
||||||
else
|
else
|
||||||
initlocalview(CTX_data_main(C), CTX_data_scene(C), CTX_wm_area(C));
|
initlocalview(CTX_data_main(C), CTX_data_scene(C), CTX_wm_area(C));
|
||||||
|
|
||||||
|
@ -4140,7 +4140,7 @@ void param_construct_end(ParamHandle *handle, ParamBool fill, ParamBool impl)
|
|||||||
|
|
||||||
param_assert(phandle->state == PHANDLE_STATE_ALLOCATED);
|
param_assert(phandle->state == PHANDLE_STATE_ALLOCATED);
|
||||||
|
|
||||||
phandle->ncharts = p_connect_pairs(phandle, (PBool)impl);
|
phandle->ncharts = p_connect_pairs(phandle, impl);
|
||||||
phandle->charts = p_split_charts(phandle, chart, phandle->ncharts);
|
phandle->charts = p_split_charts(phandle, chart, phandle->ncharts);
|
||||||
|
|
||||||
p_chart_delete(phandle->construction_chart);
|
p_chart_delete(phandle->construction_chart);
|
||||||
@ -4189,7 +4189,7 @@ void param_lscm_begin(ParamHandle *handle, ParamBool live, ParamBool abf)
|
|||||||
for (i = 0; i < phandle->ncharts; i++) {
|
for (i = 0; i < phandle->ncharts; i++) {
|
||||||
for (f=phandle->charts[i]->faces; f; f=f->nextlink)
|
for (f=phandle->charts[i]->faces; f; f=f->nextlink)
|
||||||
p_face_backup_uvs(f);
|
p_face_backup_uvs(f);
|
||||||
p_chart_lscm_begin(phandle->charts[i], (PBool)live, (PBool)abf);
|
p_chart_lscm_begin(phandle->charts[i], live, abf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,13 +253,20 @@ typedef struct RenderData {
|
|||||||
*/
|
*/
|
||||||
short yparts;
|
short yparts;
|
||||||
|
|
||||||
short planes, imtype, subimtype, quality;
|
short winpos, planes, imtype, subimtype;
|
||||||
|
|
||||||
|
/** Mode bits: */
|
||||||
|
/* 0: Enable backbuffering for images */
|
||||||
|
short bufflag;
|
||||||
|
short quality;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render to image editor, fullscreen or to new window.
|
* Render to image editor, fullscreen or to new window.
|
||||||
*/
|
*/
|
||||||
short displaymode;
|
short displaymode;
|
||||||
|
|
||||||
|
short rpad1, rpad2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flags for render settings. Use bit-masking to access the settings.
|
* Flags for render settings. Use bit-masking to access the settings.
|
||||||
*/
|
*/
|
||||||
@ -315,7 +322,11 @@ typedef struct RenderData {
|
|||||||
/**
|
/**
|
||||||
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
|
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
|
||||||
*/
|
*/
|
||||||
float xasp, yasp;
|
float xasp;
|
||||||
|
/**
|
||||||
|
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
|
||||||
|
*/
|
||||||
|
float yasp;
|
||||||
|
|
||||||
float frs_sec_base;
|
float frs_sec_base;
|
||||||
|
|
||||||
@ -338,8 +349,8 @@ typedef struct RenderData {
|
|||||||
short bake_normal_space, bake_quad_split;
|
short bake_normal_space, bake_quad_split;
|
||||||
float bake_maxdist, bake_biasdist, bake_pad;
|
float bake_maxdist, bake_biasdist, bake_pad;
|
||||||
|
|
||||||
/* path to render output */
|
/* paths to backbufffer, output */
|
||||||
char pic[240];
|
char backbuf[160], pic[160];
|
||||||
|
|
||||||
/* stamps flags. */
|
/* stamps flags. */
|
||||||
int stamp;
|
int stamp;
|
||||||
|
@ -305,7 +305,7 @@ typedef struct UserDef {
|
|||||||
int savetime;
|
int savetime;
|
||||||
char tempdir[160]; // FILE_MAXDIR length
|
char tempdir[160]; // FILE_MAXDIR length
|
||||||
char fontdir[160];
|
char fontdir[160];
|
||||||
char renderdir[240]; // FILE_MAX length
|
char renderdir[160];
|
||||||
char textudir[160];
|
char textudir[160];
|
||||||
char plugtexdir[160];
|
char plugtexdir[160];
|
||||||
char plugseqdir[160];
|
char plugseqdir[160];
|
||||||
|
@ -238,13 +238,6 @@ static void rna_UserDef_weight_color_update(Main *bmain, Scene *scene, PointerRN
|
|||||||
|
|
||||||
static void rna_UserDef_viewport_lights_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
static void rna_UserDef_viewport_lights_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
/* if all lights are off gpu_draw resets them all, [#27627]
|
|
||||||
* so disallow them all to be disabled */
|
|
||||||
if(U.light[0].flag==0 && U.light[1].flag==0 && U.light[2].flag==0) {
|
|
||||||
SolidLight *light= ptr->data;
|
|
||||||
light->flag |= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D|NS_VIEW3D_GPU, NULL);
|
WM_main_add_notifier(NC_SPACE|ND_SPACE_VIEW3D|NS_VIEW3D_GPU, NULL);
|
||||||
rna_userdef_update(bmain, scene, ptr);
|
rna_userdef_update(bmain, scene, ptr);
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ struct Render
|
|||||||
ListBase instancetable;
|
ListBase instancetable;
|
||||||
int totinstance;
|
int totinstance;
|
||||||
|
|
||||||
struct Image *bakebuf;
|
struct Image *backbuf, *bakebuf;
|
||||||
|
|
||||||
struct GHash *orco_hash;
|
struct GHash *orco_hash;
|
||||||
|
|
||||||
|
@ -4665,6 +4665,7 @@ void RE_Database_Free(Render *re)
|
|||||||
re->totvlak=re->totvert=re->totstrand=re->totlamp=re->tothalo= 0;
|
re->totvlak=re->totvert=re->totstrand=re->totlamp=re->tothalo= 0;
|
||||||
re->i.convertdone= 0;
|
re->i.convertdone= 0;
|
||||||
|
|
||||||
|
re->backbuf= NULL;
|
||||||
re->bakebuf= NULL;
|
re->bakebuf= NULL;
|
||||||
|
|
||||||
if(re->scene)
|
if(re->scene)
|
||||||
|
@ -149,6 +149,7 @@ static Render *envmap_render_copy(Render *re, EnvMap *env)
|
|||||||
envre->r.layers.first= envre->r.layers.last= NULL;
|
envre->r.layers.first= envre->r.layers.last= NULL;
|
||||||
envre->r.filtertype= 0;
|
envre->r.filtertype= 0;
|
||||||
envre->r.xparts= envre->r.yparts= 2;
|
envre->r.xparts= envre->r.yparts= 2;
|
||||||
|
envre->r.bufflag= 0;
|
||||||
envre->r.size= 100;
|
envre->r.size= 100;
|
||||||
envre->r.yasp= envre->r.xasp= 1;
|
envre->r.yasp= envre->r.xasp= 1;
|
||||||
|
|
||||||
|
@ -2065,6 +2065,36 @@ static void do_render_fields_3d(Render *re)
|
|||||||
re->display_draw(re->ddh, re->result, NULL);
|
re->display_draw(re->ddh, re->result, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void load_backbuffer(Render *re)
|
||||||
|
{
|
||||||
|
if(re->r.alphamode == R_ADDSKY) {
|
||||||
|
ImBuf *ibuf;
|
||||||
|
char name[256];
|
||||||
|
|
||||||
|
BLI_strncpy(name, re->r.backbuf, sizeof(name));
|
||||||
|
BLI_path_abs(name, re->main->name);
|
||||||
|
BLI_path_frame(name, re->r.cfra, 0);
|
||||||
|
|
||||||
|
if(re->backbuf) {
|
||||||
|
re->backbuf->id.us--;
|
||||||
|
if(re->backbuf->id.us<1)
|
||||||
|
BKE_image_signal(re->backbuf, NULL, IMA_SIGNAL_RELOAD);
|
||||||
|
}
|
||||||
|
|
||||||
|
re->backbuf= BKE_add_image_file(name);
|
||||||
|
ibuf= BKE_image_get_ibuf(re->backbuf, NULL);
|
||||||
|
if(ibuf==NULL) {
|
||||||
|
// error() doesnt work with render window open
|
||||||
|
//error("No backbuf there!");
|
||||||
|
printf("Error: No backbuf %s\n", name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (re->r.mode & R_FIELDS)
|
||||||
|
image_de_interlace(re->backbuf, re->r.mode & R_ODDFIELD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* main render routine, no compositing */
|
/* main render routine, no compositing */
|
||||||
static void do_render_fields_blur_3d(Render *re)
|
static void do_render_fields_blur_3d(Render *re)
|
||||||
{
|
{
|
||||||
@ -2076,6 +2106,10 @@ static void do_render_fields_blur_3d(Render *re)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* backbuffer initialize */
|
||||||
|
if(re->r.bufflag & 1)
|
||||||
|
load_backbuffer(re);
|
||||||
|
|
||||||
/* now use renderdata and camera to set viewplane */
|
/* now use renderdata and camera to set viewplane */
|
||||||
RE_SetCamera(re, camera);
|
RE_SetCamera(re, camera);
|
||||||
|
|
||||||
|
@ -502,6 +502,21 @@ int shadeHaloFloat(HaloRen *har, float *col, int zz,
|
|||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
static void fillBackgroundImage(float *collector, float fx, float fy)
|
||||||
|
{
|
||||||
|
collector[0] = 0.0;
|
||||||
|
collector[1] = 0.0;
|
||||||
|
collector[2] = 0.0;
|
||||||
|
collector[3] = 0.0;
|
||||||
|
|
||||||
|
if(R.backbuf) {
|
||||||
|
float dx= 1.0f/(float)R.winx;
|
||||||
|
float dy= 1.0f/(float)R.winy;
|
||||||
|
|
||||||
|
image_sample(R.backbuf, fx*dx, fy*dy, dx, dy, collector);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Only view vector is important here. Result goes to colf[3] */
|
/* Only view vector is important here. Result goes to colf[3] */
|
||||||
void shadeSkyView(float *colf, float *rco, float *view, float *dxyview, short thread)
|
void shadeSkyView(float *colf, float *rco, float *view, float *dxyview, short thread)
|
||||||
{
|
{
|
||||||
@ -611,14 +626,18 @@ void shadeSkyPixel(float *collector, float fx, float fy, short thread)
|
|||||||
|
|
||||||
float fac;
|
float fac;
|
||||||
|
|
||||||
if((R.wrld.skytype & (WO_SKYBLEND+WO_SKYTEX))==0) {
|
/* 1. Do a backbuffer image: */
|
||||||
/* 1. solid color */
|
if(R.r.bufflag & 1) {
|
||||||
|
fillBackgroundImage(collector, fx, fy);
|
||||||
|
}
|
||||||
|
else if((R.wrld.skytype & (WO_SKYBLEND+WO_SKYTEX))==0) {
|
||||||
|
/* 2. solid color */
|
||||||
VECCOPY(collector, &R.wrld.horr);
|
VECCOPY(collector, &R.wrld.horr);
|
||||||
|
|
||||||
collector[3] = 0.0f;
|
collector[3] = 0.0f;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* 2. */
|
/* 3. */
|
||||||
|
|
||||||
/* This one true because of the context of this routine */
|
/* This one true because of the context of this routine */
|
||||||
if(R.wrld.skytype & WO_SKYPAPER) {
|
if(R.wrld.skytype & WO_SKYPAPER) {
|
||||||
|
@ -43,6 +43,9 @@ set(INC
|
|||||||
../../../intern/ghost
|
../../../intern/ghost
|
||||||
../../../intern/opennl/extern
|
../../../intern/opennl/extern
|
||||||
../../../source/gameengine/BlenderRoutines
|
../../../source/gameengine/BlenderRoutines
|
||||||
|
)
|
||||||
|
|
||||||
|
set(INC_SYS
|
||||||
${ZLIB_INCLUDE_DIRS}
|
${ZLIB_INCLUDE_DIRS}
|
||||||
${OPENGL_INCLUDE_DIR}
|
${OPENGL_INCLUDE_DIR}
|
||||||
${GLEW_INCLUDE_PATH}
|
${GLEW_INCLUDE_PATH}
|
||||||
@ -50,7 +53,6 @@ set(INC
|
|||||||
|
|
||||||
set(SRC
|
set(SRC
|
||||||
intern/wm.c
|
intern/wm.c
|
||||||
intern/wm_apple.c
|
|
||||||
intern/wm_cursors.c
|
intern/wm_cursors.c
|
||||||
intern/wm_dragdrop.c
|
intern/wm_dragdrop.c
|
||||||
intern/wm_draw.c
|
intern/wm_draw.c
|
||||||
@ -87,17 +89,18 @@ if(WITH_OPENCOLLADA)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CODEC_QUICKTIME)
|
if(WITH_CODEC_QUICKTIME)
|
||||||
list(APPEND INC ../quicktime ${QUICKTIME_INC})
|
list(APPEND INC ../quicktime)
|
||||||
|
list(APPEND INC_SYS ${QUICKTIME_INC})
|
||||||
add_definitions(-DWITH_QUICKTIME)
|
add_definitions(-DWITH_QUICKTIME)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
if(WITH_CODEC_FFMPEG)
|
||||||
list(APPEND INC ${FFMPEG_INC})
|
list(APPEND INC_SYS ${FFMPEG_INC})
|
||||||
add_definitions(-DWITH_FFMPEG)
|
add_definitions(-DWITH_FFMPEG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
if(WITH_PYTHON)
|
||||||
list(APPEND INC ../python ${PYTHON_INCLUDE_DIRS})
|
list(APPEND INC ../python)
|
||||||
add_definitions(-DWITH_PYTHON)
|
add_definitions(-DWITH_PYTHON)
|
||||||
|
|
||||||
if(WITH_PYTHON_SECURITY)
|
if(WITH_PYTHON_SECURITY)
|
||||||
@ -109,12 +112,16 @@ if(WITH_GAMEENGINE)
|
|||||||
add_definitions(-DWITH_GAMEENGINE)
|
add_definitions(-DWITH_GAMEENGINE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_COCOA)
|
if(APPLE)
|
||||||
list(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/wm_apple.c")
|
if(NOT WITH_COCOA)
|
||||||
|
list(APPEND SRC
|
||||||
|
intern/wm_apple.c
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_BUILDINFO)
|
if(WITH_BUILDINFO)
|
||||||
add_definitions(-DNAN_BUILDINFO)
|
add_definitions(-DNAN_BUILDINFO)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
blender_add_lib_nolist(bf_windowmanager "${SRC}" "${INC}")
|
blender_add_lib_nolist(bf_windowmanager "${SRC}" "${INC}" "${INC_SYS}")
|
||||||
|
@ -183,12 +183,6 @@ endif()
|
|||||||
message(STATUS "Player Skipping: (${REM_MSG})")
|
message(STATUS "Player Skipping: (${REM_MSG})")
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(blenderplayer ${BLENDER_SORTED_LIBS})
|
target_link_libraries(blenderplayer ${BLENDER_SORTED_LIBS})
|
||||||
|
|
||||||
unset(SEARCHLIB)
|
|
||||||
unset(SORTLIB)
|
|
||||||
unset(REMLIB)
|
|
||||||
unset(REM_MSG)
|
|
||||||
|
|
||||||
# else()
|
# else()
|
||||||
# target_link_libraries(blenderplayer ${BLENDER_LINK_LIBS})
|
# target_link_libraries(blenderplayer ${BLENDER_LINK_LIBS})
|
||||||
# endif()
|
# endif()
|
||||||
|
@ -876,12 +876,6 @@ endif()
|
|||||||
message(STATUS "Blender Skipping: (${REM_MSG})")
|
message(STATUS "Blender Skipping: (${REM_MSG})")
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(blender ${BLENDER_SORTED_LIBS})
|
target_link_libraries(blender ${BLENDER_SORTED_LIBS})
|
||||||
|
|
||||||
unset(SEARCHLIB)
|
|
||||||
unset(SORTLIB)
|
|
||||||
unset(REMLIB)
|
|
||||||
unset(REM_MSG)
|
|
||||||
|
|
||||||
#else()
|
#else()
|
||||||
# target_link_libraries(blender ${BLENDER_LINK_LIBS})
|
# target_link_libraries(blender ${BLENDER_LINK_LIBS})
|
||||||
#endif()
|
#endif()
|
||||||
|
@ -538,7 +538,7 @@ static int set_output(int argc, const char **argv, void *data)
|
|||||||
if (argc >= 1){
|
if (argc >= 1){
|
||||||
if (CTX_data_scene(C)) {
|
if (CTX_data_scene(C)) {
|
||||||
Scene *scene= CTX_data_scene(C);
|
Scene *scene= CTX_data_scene(C);
|
||||||
BLI_strncpy(scene->r.pic, argv[1], sizeof(scene->r.pic));
|
BLI_strncpy(scene->r.pic, argv[1], FILE_MAXDIR);
|
||||||
} else {
|
} else {
|
||||||
printf("\nError: no blend loaded. cannot use '-o / --render-output'.\n");
|
printf("\nError: no blend loaded. cannot use '-o / --render-output'.\n");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user