[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18816] branches/blender2.5/blender/source /blender: * Added range function for Multires's level RNA
Nicholas Bishop
nicholasbishop at gmail.com
Thu Feb 5 02:12:49 CET 2009
Revision: 18816
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18816
Author: nicholasbishop
Date: 2009-02-05 02:12:47 +0100 (Thu, 05 Feb 2009)
Log Message:
-----------
* Added range function for Multires's level RNA
* Removed RNA for old multires in Mesh, the old mesh->mr struct should never be used (except for loading old files)
* Dealt with sculpt + render (just needed to force multires update)
* sculpt memory leaks fixed
* Entering editmode now always exits paint modes (previously, only happened if editmode was called from the header button)
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
branches/blender2.5/blender/source/blender/editors/object/object_edit.c
branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
branches/blender2.5/blender/source/blender/editors/sculpt/sculpt.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -1204,7 +1204,7 @@
void multires_force_update(Object *ob)
{
- if(ob->derivedFinal) {
+ if(ob && ob->derivedFinal) {
ob->derivedFinal->needsFree =1;
ob->derivedFinal->release(ob->derivedFinal);
ob->derivedFinal = NULL;
Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -3101,6 +3101,8 @@
}
if(flag & EM_WAITCURSOR) waitcursor(1);
+
+ ED_view3d_exit_paint_modes(C);
if(ob->type==OB_MESH) {
Mesh *me= ob->data;
Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -45,6 +45,7 @@
#include "BKE_idprop.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_multires.h"
#include "BKE_report.h"
#include "BKE_screen.h"
#include "BKE_utildefines.h"
@@ -2028,8 +2029,11 @@
/* handle UI stuff */
WM_cursor_wait(1);
+
+ /* flush multires changes (for sculpt) */
+ multires_force_update(CTX_data_active_object(C));
- // get editmode results, sculpt mode results (no set sculptmode in end!)
+ // get editmode results
// store spare
// get view3d layer, local layer, make this nice api call to render
// store spare
Modified: branches/blender2.5/blender/source/blender/editors/sculpt/sculpt.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/sculpt/sculpt.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/editors/sculpt/sculpt.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -1083,6 +1083,8 @@
}
if(ss->totvert != ss->fmap_size) {
+ if(ss->fmap) MEM_freeN(ss->fmap);
+ if(ss->fmap_mem) MEM_freeN(ss->fmap_mem);
create_vert_face_map(&ss->fmap, &ss->fmap_mem, ss->mface, ss->totvert, ss->totface);
ss->fmap_size = ss->totvert;
}
@@ -1628,6 +1630,8 @@
ToolSettings *ts = CTX_data_tool_settings(C);
if(G.f & G_SCULPTMODE) {
+ multires_force_update(CTX_data_active_object(C));
+
/* Leave sculptmode */
G.f &= ~G_SCULPTMODE;
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -140,8 +140,10 @@
else if(G.f & G_WEIGHTPAINT)
WM_operator_name_call(C, "VIEW3D_OT_wpaint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
+ if(G.f & G_SCULPTMODE)
+ WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", WM_OP_EXEC_REGION_WIN, NULL);
+
// if(G.f & G_TEXTUREPAINT) set_texturepaint();
-// if(G.f & G_SCULPTMODE) set_sculptmode();
if(G.f & G_PARTICLEEDIT) PE_set_particle_edit(CTX_data_scene(C));
G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE+G_PARTICLEEDIT);
@@ -5427,7 +5429,6 @@
else if (v3d->modeselect == V3D_EDITMODE_SEL) {
if(!obedit) {
v3d->flag &= ~V3D_MODE;
- ED_view3d_exit_paint_modes(C);
ED_object_enter_editmode(C, EM_WAITCURSOR);
ED_undo_push(C, "Original"); /* here, because all over code enter_editmode is abused */
}
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -172,13 +172,6 @@
rna_iterator_array_begin(iter, NULL, 0, 0, NULL);
}
-static void rna_MeshMultires_level_range(PointerRNA *ptr, int *min, int *max)
-{
- Multires *mr= (Multires*)ptr->data;
- *min= 1;
- *max= mr->level_count;
-}
-
static void rna_MeshFace_material_index_range(PointerRNA *ptr, int *min, int *max)
{
Mesh *me= (Mesh*)ptr->id.data;
@@ -871,36 +864,6 @@
RNA_def_property_ui_text(prop, "Value", "");
}
-static void rna_def_mmultires(BlenderRNA *brna)
-{
- StructRNA *srna;
- PropertyRNA *prop;
-
- srna= RNA_def_struct(brna, "MeshMultires", NULL);
- RNA_def_struct_sdna(srna, "Multires");
- RNA_def_struct_ui_text(srna, "Mesh Multires", "Multiresolution mesh levels data in a Mesh datablock.");
-
- prop= RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, "newlvl");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshMultires_level_range");
- RNA_def_property_ui_text(prop, "Level", "");
-
- prop= RNA_def_property(srna, "edge_level", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, "edgelvl");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshMultires_level_range");
- RNA_def_property_ui_text(prop, "Edge Level", "");
-
- prop= RNA_def_property(srna, "pin_level", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, "pinlvl");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshMultires_level_range");
- RNA_def_property_ui_text(prop, "Pin Level", "Set level to apply modifiers to during render.");
-
- prop= RNA_def_property(srna, "render_level", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, "renderlvl");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MeshMultires_level_range");
- RNA_def_property_ui_text(prop, "Render Level", "Set level to render.");
-}
-
void rna_def_texmat_common(StructRNA *srna, const char *texspace_editable)
{
PropertyRNA *prop;
@@ -1013,10 +976,6 @@
RNA_def_property_pointer_sdna(prop, NULL, "texcomesh");
RNA_def_property_ui_text(prop, "Texture Space Mesh", "Derive texture coordinates from another mesh");
- prop= RNA_def_property(srna, "multires", PROP_POINTER, PROP_NONE);
- RNA_def_property_pointer_sdna(prop, NULL, "mr");
- RNA_def_property_ui_text(prop, "Multires", "");
-
prop= RNA_def_property(srna, "shape_keys", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "key");
RNA_def_property_ui_text(prop, "Shape Keys", "");
@@ -1035,7 +994,6 @@
rna_def_msticky(brna);
rna_def_mcol(brna);
rna_def_mproperties(brna);
- rna_def_mmultires(brna);
}
#endif
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c 2009-02-04 22:33:24 UTC (rev 18815)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c 2009-02-05 01:12:47 UTC (rev 18816)
@@ -232,9 +232,17 @@
rna_object_uvlayer_name_set(ptr, value, wmd->uvlayer_name, sizeof(wmd->uvlayer_name));
}
+static void rna_MultiresModifier_level_range(PointerRNA *ptr, int *min, int *max)
+{
+ MultiresModifierData *mmd = (MultiresModifierData*)ptr->data;
+
+ *min = 1;
+ *max = mmd->totlvl;
+}
+
#else
-static void rna_def_property_subdivision_common(StructRNA *srna, const char type[], const char level[])
+static void rna_def_property_subdivision_common(StructRNA *srna, const char type[])
{
static EnumPropertyItem prop_subdivision_type_items[] = {
{0, "CATMULL_CLARK", "Catmull-Clark", ""},
@@ -245,13 +253,6 @@
RNA_def_property_enum_sdna(prop, NULL, type);
RNA_def_property_enum_items(prop, prop_subdivision_type_items);
RNA_def_property_ui_text(prop, "Subdivision Type", "Selects type of subdivision algorithm.");
-
- prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE);
- RNA_def_property_int_sdna(prop, NULL, level);
- RNA_def_property_range(prop, 1, 20);
- RNA_def_property_ui_range(prop, 1, 6, 1, 0);
- RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to perform.");
- RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
static void rna_def_modifier_subsurf(BlenderRNA *brna)
@@ -263,8 +264,15 @@
RNA_def_struct_ui_text(srna, "Subsurf Modifier", "Subdivision surface modifier.");
RNA_def_struct_sdna(srna, "SubsurfModifierData");
- rna_def_property_subdivision_common(srna, "subdivType", "levels");
+ rna_def_property_subdivision_common(srna, "subdivType");
+ prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "levels");
+ RNA_def_property_range(prop, 1, 20);
+ RNA_def_property_ui_range(prop, 1, 6, 1, 0);
+ RNA_def_property_ui_text(prop, "Levels", "Number of subdivisions to perform.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
prop= RNA_def_property(srna, "render_levels", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "renderLevels");
RNA_def_property_range(prop, 1, 20);
@@ -285,12 +293,19 @@
static void rna_def_modifier_multires(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna= RNA_def_struct(brna, "MultiresModifier", "Modifier");
RNA_def_struct_ui_text(srna, "Multires Modifier", "Multiresolution mesh modifier.");
RNA_def_struct_sdna(srna, "MultiresModifierData");
- rna_def_property_subdivision_common(srna, "simple", "lvl");
+ rna_def_property_subdivision_common(srna, "simple");
+
+ prop= RNA_def_property(srna, "levels", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "lvl");
+ RNA_def_property_ui_text(prop, "Levels", "");
+ RNA_def_property_int_funcs(prop, NULL, NULL, "rna_MultiresModifier_level_range");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
static void rna_def_modifier_lattice(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list