[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23729] trunk/blender/source/blender: A few bugfixes:
Joshua Leung
aligorith at gmail.com
Fri Oct 9 11:48:04 CEST 2009
Revision: 23729
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23729
Author: aligorith
Date: 2009-10-09 11:48:04 +0200 (Fri, 09 Oct 2009)
Log Message:
-----------
A few bugfixes:
* #19583: Keying Sets list issues
Deleting a Keying Set (or a Keying Set Path) set the active index to 0, but that would mean that the first item would be selected but not visible.
* #19590: Keyframing properties of a modifier with more than one of it's type the property will highlight in all
- Modifiers now always have a unique name, so renaming a modifier should check that the name is unique. Most of the files changed in this commit were just to make sure that modifiers got unique names when they were created
- Modifiers path getter was wrapped a bit wrong (missing the "s around the name)
* Constraints Bugs
- Constraints renaming now also makes sure the names stay unique
- Fixed (or attempted to fix) compiler warnings about some enum declaration for distance constraint
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_modifier.h
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/blenkernel/intern/multires.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/editors/animation/keyingsets.c
trunk/blender/source/blender/editors/interface/interface_templates.c
trunk/blender/source/blender/editors/object/object_edit.c
trunk/blender/source/blender/editors/object/object_hook.c
trunk/blender/source/blender/editors/object/object_modifier.c
trunk/blender/source/blender/makesrna/intern/rna_constraint.c
trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h 2009-10-09 09:48:04 UTC (rev 23729)
@@ -274,6 +274,8 @@
struct ModifierData *modifier_new(int type);
void modifier_free(struct ModifierData *md);
+void modifier_unique_name(struct ListBase *modifiers, struct ModifierData *md);
+
void modifier_copyData(struct ModifierData *md, struct ModifierData *target);
int modifier_dependsOnTime(struct ModifierData *md);
int modifier_supportsMapping(struct ModifierData *md);
Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -34,6 +34,7 @@
*
*/
+#include "stddef.h"
#include "string.h"
#include "stdarg.h"
#include "math.h"
@@ -8761,7 +8762,8 @@
{
ModifierTypeInfo *mti = modifierType_getInfo(type);
ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
-
+
+ // FIXME: we need to make the name always be unique somehow...
strcpy(md->name, mti->name);
md->type = type;
@@ -8786,6 +8788,15 @@
MEM_freeN(md);
}
+void modifier_unique_name(ListBase *modifiers, ModifierData *md)
+{
+ if (modifiers && md) {
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ BLI_uniquename(modifiers, md, mti->name, '.', offsetof(ModifierData, name), sizeof(md->name));
+ }
+}
+
int modifier_dependsOnTime(ModifierData *md)
{
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -142,6 +142,7 @@
mmd = (MultiresModifierData*)modifier_new(eModifierType_Multires);
BLI_insertlinkbefore(&base->object->modifiers, md, mmd);
+ modifier_unique_name(&base->object->modifiers, mmd);
}
if(mmd)
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -4095,6 +4095,8 @@
BLI_addhead(&ob->modifiers, hmd);
BLI_remlink(&ob->hooks, hook);
+
+ modifier_unique_name(&ob->modifiers, hmd);
MEM_freeN(hook);
}
@@ -7659,6 +7661,8 @@
smd->flags |= eSubsurfModifierFlag_ControlEdges;
BLI_addtail(&ob->modifiers, smd);
+
+ modifier_unique_name(&ob->modifiers, smd);
}
}
Modified: trunk/blender/source/blender/editors/animation/keyingsets.c
===================================================================
--- trunk/blender/source/blender/editors/animation/keyingsets.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/editors/animation/keyingsets.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -177,10 +177,11 @@
/* free KeyingSet's data, then remove it from the scene */
BKE_keyingset_free(ks);
-
BLI_freelinkN(&scene->keyingsets, ks);
- scene->active_keyingset= 0;
+ /* the active one should now be the previously second-to-last one */
+ scene->active_keyingset--;
+
return OPERATOR_FINISHED;
}
@@ -258,8 +259,8 @@
BLI_freelinkN(&ks->paths, ksp);
}
- /* fix active path index */
- ks->active_path= 0;
+ /* the active path should now be the previously second-to-last active one */
+ ks->active_path--;
}
else {
BKE_report(op->reports, RPT_ERROR, "No active Keying Set Path to remove");
Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -458,6 +458,8 @@
nmd->mode &= ~eModifierMode_Virtual;
BLI_addhead(&ob->modifiers, nmd);
+
+ modifier_unique_name(&ob->modifiers, nmd);
ob->partype = PAROBJECT;
Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/editors/object/object_edit.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -848,6 +848,7 @@
BooleanModifierData *bmd = NULL;
bmd = (BooleanModifierData *)modifier_new(eModifierType_Boolean);
BLI_addtail(&ob->modifiers, bmd);
+ modifier_unique_name(&ob->modifiers, bmd);
bmd->object = base_select->object;
bmd->modifier.mode |= eModifierMode_Realtime;
switch(nr){
@@ -978,9 +979,10 @@
}
else if(depth == 0 && *set != 0) {
SubsurfModifierData *smd = (SubsurfModifierData*) modifier_new(eModifierType_Subsurf);
-
+
BLI_addtail(&ob->modifiers, smd);
-
+ modifier_unique_name(&ob->modifiers, smd);
+
if (level!=-1) {
smd->levels = level;
}
@@ -1197,6 +1199,7 @@
nmd = modifier_new(md->type);
modifier_copyData(md, nmd);
BLI_addtail(&base->object->modifiers, nmd);
+ modifier_unique_name(&base->object->modifiers, nmd);
}
copy_object_particlesystems(base->object, ob);
@@ -1220,6 +1223,7 @@
mdn = modifier_new(event);
BLI_addtail(&base->object->modifiers, mdn);
+ modifier_unique_name(&base->object->modifiers, mdn);
modifier_copyData(md, mdn);
}
Modified: trunk/blender/source/blender/editors/object/object_hook.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_hook.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/editors/object/object_hook.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -480,6 +480,7 @@
hmd = (HookModifierData*) modifier_new(eModifierType_Hook);
BLI_insertlinkbefore(&obedit->modifiers, md, hmd);
sprintf(hmd->modifier.name, "Hook-%s", ob->id.name+2);
+ modifier_unique_name(&obedit->modifiers, hmd);
}
else if (hmd->indexar) MEM_freeN(hmd->indexar); /* reassign, hook was set */
Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/editors/object/object_modifier.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -76,7 +76,7 @@
int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int type)
{
- ModifierData *md;
+ ModifierData *md=NULL, *new_md=NULL;
ModifierTypeInfo *mti = modifierType_getInfo(type);
if(mti->flags&eModifierTypeFlag_Single) {
@@ -87,20 +87,29 @@
}
if(type == eModifierType_ParticleSystem) {
+ /* don't need to worry about the new modifier's name, since that is set to the number
+ * of particle systems which shouldn't have too many duplicates
+ */
object_add_particle_system(scene, ob);
}
else {
+ /* get new modifier data to add */
+ new_md= modifier_new(type);
+
if(mti->flags&eModifierTypeFlag_RequiresOriginalData) {
md = ob->modifiers.first;
-
+
while(md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform)
md = md->next;
-
- BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(type));
+
+ BLI_insertlinkbefore(&ob->modifiers, md, new_md);
}
else
- BLI_addtail(&ob->modifiers, modifier_new(type));
+ BLI_addtail(&ob->modifiers, new_md);
+ /* make sure modifier data has unique name */
+ modifier_unique_name(&ob->modifiers, new_md);
+
/* special cases */
if(type == eModifierType_Softbody) {
if(!ob->soft) {
@@ -111,7 +120,7 @@
else if(type == eModifierType_Collision) {
if(!ob->pd)
ob->pd= object_add_collision_fields(0);
-
+
ob->pd->deflect= 1;
DAG_scene_sort(scene);
}
@@ -400,6 +409,7 @@
nmd = modifier_new(md->type);
modifier_copyData(md, nmd);
BLI_insertlink(&ob->modifiers, md, nmd);
+ modifier_unique_name(&ob->modifiers, nmd);
return 1;
}
Modified: trunk/blender/source/blender/makesrna/intern/rna_constraint.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_constraint.c 2009-10-09 06:18:52 UTC (rev 23728)
+++ trunk/blender/source/blender/makesrna/intern/rna_constraint.c 2009-10-09 09:48:04 UTC (rev 23729)
@@ -87,13 +87,6 @@
{0, NULL, 0, NULL, NULL},
};
-EnumPropertyItem constraint_distance_items[] = {
- {LIMITDIST_INSIDE, "LIMITDIST_INSIDE", 0, "Inside", ""},
- {LIMITDIST_OUTSIDE, "LIMITDIST_OUTSIDE", 0, "Outside", ""},
- {LIMITDIST_ONSURFACE, "LIMITDIST_ONSURFACE", 0, "On Surface", ""},
- {0, NULL, 0, NULL, NULL}
-};
-
#ifdef RNA_RUNTIME
#include "BKE_action.h"
@@ -153,6 +146,24 @@
}
}
+static void rna_Constraint_name_set(PointerRNA *ptr, const char *value)
+{
+ bConstraint *con= ptr->data;
+
+ /* copy the new name into the name slot */
+ BLI_strncpy(con->name, value, sizeof(con->name));
+
+ /* make sure name is unique */
+ if (ptr->id.data) {
+ Object *ob= ptr->id.data;
+ ListBase *list= get_active_constraints(ob);
+
+ /* if we have the list, check for unique name, otherwise give up */
+ if (list)
+ unique_constraint_name(con, list);
+ }
+}
+
static char *rna_Constraint_path(PointerRNA *ptr)
{
Object *ob= ptr->id.data;
@@ -291,6 +302,14 @@
#else
+EnumPropertyItem constraint_distance_items[] = {
+ {LIMITDIST_INSIDE, "LIMITDIST_INSIDE", 0, "Inside", ""},
+ {LIMITDIST_OUTSIDE, "LIMITDIST_OUTSIDE", 0, "Outside", ""},
+ {LIMITDIST_ONSURFACE, "LIMITDIST_ONSURFACE", 0, "On Surface", ""},
+ {0, NULL, 0, NULL, NULL}
+};
+
+
static void rna_def_constrainttarget(BlenderRNA *brna)
{
StructRNA *srna;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list