diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 6e1a4ba6cf2..4217e27fa7b 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1943,15 +1943,13 @@ static int game_property_new(bContext *C, wmOperator *op) char name[32]; int type= RNA_enum_get(op->ptr, "type"); - if(!ob) - return OPERATOR_CANCELLED; - prop= new_property(type); BLI_addtail(&ob->prop, prop); RNA_string_get(op->ptr, "name", name); - if(BLI_strnlen(name, 32) > 0) + if (name[0] != '\0') { BLI_strncpy(prop->name, name, sizeof(prop->name)); + } unique_property(NULL, prop, 0); // make_unique_prop_names(prop->name); diff --git a/source/gameengine/Converter/KX_ConvertProperties.cpp b/source/gameengine/Converter/KX_ConvertProperties.cpp index 03d9be0d909..8eea39c4956 100644 --- a/source/gameengine/Converter/KX_ConvertProperties.cpp +++ b/source/gameengine/Converter/KX_ConvertProperties.cpp @@ -56,6 +56,9 @@ #include "BLI_winstuff.h" #endif +extern "C" { + #include "BKE_property.h" +} /* prototype */ void BL_ConvertTextProperty(Object* object, KX_FontObject* fontobj,SCA_TimeEventManager* timemgr,SCA_IScene* scene, bool isInActiveLayer); @@ -174,79 +177,68 @@ void BL_ConvertTextProperty(Object* object, KX_FontObject* fontobj,SCA_TimeEvent { CValue* tprop = fontobj->GetProperty("Text"); if(!tprop) return; + bProperty* prop = get_ob_property(object, "Text"); + if(!prop) return; Curve *curve = static_cast(object->data); STR_String str = curve->str; + CValue* propval = NULL; - bProperty* prop = (bProperty*)object->prop.first; - CValue* propval; - - while(prop) - { - if (strcmp(prop->name, "Text")!=0) { - prop = prop->next; - continue; + switch(prop->type) { + case GPROP_BOOL: + { + int value = atoi(str); + propval = new CBoolValue((bool)(value != 0)); + tprop->SetValue(propval); + break; } - - propval = NULL; - - switch(prop->type) { - case GPROP_BOOL: - { - int value = atoi(str); - propval = new CBoolValue((bool)(value != 0)); - tprop->SetValue(propval); - break; - } - case GPROP_INT: - { - int value = atoi(str); - propval = new CIntValue(value); - tprop->SetValue(propval); - break; - } - case GPROP_FLOAT: - { - float floatprop = atof(str); - propval = new CFloatValue(floatprop); - tprop->SetValue(propval); - break; - } - case GPROP_STRING: - { - propval = new CStringValue(str, ""); - tprop->SetValue(propval); - break; - } - case GPROP_TIME: - { - float floatprop = atof(str); - - CValue* timeval = new CFloatValue(floatprop); - // set a subproperty called 'timer' so that - // we can register the replica of this property - // at the time a game object is replicated (AddObjectActuator triggers this) - CValue *bval = new CBoolValue(true); - timeval->SetProperty("timer",bval); - bval->Release(); - if (isInActiveLayer) - { - timemgr->AddTimeProperty(timeval); - } - - propval = timeval; - tprop->SetValue(timeval); - } - default: - { - // todo make an assert etc. - } + case GPROP_INT: + { + int value = atoi(str); + propval = new CIntValue(value); + tprop->SetValue(propval); + break; } - - if (propval) - propval->Release(); + case GPROP_FLOAT: + { + float floatprop = atof(str); + propval = new CFloatValue(floatprop); + tprop->SetValue(propval); + break; + } + case GPROP_STRING: + { + propval = new CStringValue(str, ""); + tprop->SetValue(propval); + break; + } + case GPROP_TIME: + { + float floatprop = atof(str); - prop = prop->next; + CValue* timeval = new CFloatValue(floatprop); + // set a subproperty called 'timer' so that + // we can register the replica of this property + // at the time a game object is replicated (AddObjectActuator triggers this) + CValue *bval = new CBoolValue(true); + timeval->SetProperty("timer",bval); + bval->Release(); + if (isInActiveLayer) + { + timemgr->AddTimeProperty(timeval); + } + + propval = timeval; + tprop->SetValue(timeval); + } + default: + { + // todo make an assert etc. + } + } + + if (propval) { + propval->Release(); } }