[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22803] branches/blender2.5/blender: - Add remove game properties now possible from the logic space properties panel .
Campbell Barton
ideasman42 at gmail.com
Wed Aug 26 14:51:28 CEST 2009
Revision: 22803
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22803
Author: campbellbarton
Date: 2009-08-26 14:51:27 +0200 (Wed, 26 Aug 2009)
Log Message:
-----------
- Add remove game properties now possible from the logic space properties panel.
- PyDebugLine, utility function to run if the BGE crashes, you can see which python file and line called the C/C++ code.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/space_logic.py
branches/blender2.5/blender/source/blender/editors/object/object_edit.c
branches/blender2.5/blender/source/blender/editors/object/object_intern.h
branches/blender2.5/blender/source/blender/editors/object/object_ops.c
branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp
Modified: branches/blender2.5/blender/release/ui/space_logic.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_logic.py 2009-08-26 12:01:15 UTC (rev 22802)
+++ branches/blender2.5/blender/release/ui/space_logic.py 2009-08-26 12:51:27 UTC (rev 22803)
@@ -14,12 +14,17 @@
ob = context.active_object
game = ob.game
- for prop in game.properties:
- flow = layout.row()
+ for i, prop in enumerate(game.properties):
+ flow = layout.row(align=True)
flow.itemR(prop, "name", text="")
flow.itemR(prop, "type", text="")
flow.itemR(prop, "value", text="") # we dont care about the type. rna will display correctly
- flow.itemR(prop, "debug")
+ flow.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO')
+ flow.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X')
+
+ flow = layout.row()
+ flow.itemO("object.game_property_new")
+
+
bpy.types.register(LOGIC_PT_properties)
-
Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-08-26 12:01:15 UTC (rev 22802)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-08-26 12:51:27 UTC (rev 22803)
@@ -7161,3 +7161,72 @@
if(mode & OB_MODE_PARTICLE_EDIT)
WM_operator_name_call(C, "PARTICLE_OT_particle_edit_toggle", WM_OP_EXEC_REGION_WIN, NULL);
}
+
+/* game property ops */
+
+static int game_property_new(bContext *C, wmOperator *op)
+{
+ Object *ob= CTX_data_active_object(C);
+ bProperty *prop;
+
+ if(!ob)
+ return OPERATOR_CANCELLED;
+
+ prop= new_property(PROP_FLOAT);
+ BLI_addtail(&ob->prop, prop);
+ unique_property(NULL, prop, 0); // make_unique_prop_names(prop->name);
+
+ return OPERATOR_FINISHED;
+}
+
+
+void OBJECT_OT_game_property_new(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "New Game Property";
+ ot->idname= "OBJECT_OT_game_property_new";
+
+ /* api callbacks */
+ ot->exec= game_property_new;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static int game_property_remove(bContext *C, wmOperator *op)
+{
+ Object *ob= CTX_data_active_object(C);
+ bProperty *prop;
+ int index;
+
+ if(!ob)
+ return OPERATOR_CANCELLED;
+
+ index = RNA_int_get(op->ptr, "index");
+
+ prop= BLI_findlink(&ob->prop, index);
+
+ if(prop) {
+ BLI_remlink(&ob->prop, prop);
+ free_property(prop);
+ return OPERATOR_FINISHED;
+ }
+ else {
+ return OPERATOR_CANCELLED;
+ }
+}
+
+void OBJECT_OT_game_property_remove(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Remove Game Property";
+ ot->idname= "OBJECT_OT_game_property_remove";
+
+ /* api callbacks */
+ ot->exec= game_property_remove;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Property index to remove ", 0, INT_MAX);
+}
Modified: branches/blender2.5/blender/source/blender/editors/object/object_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_intern.h 2009-08-26 12:01:15 UTC (rev 22802)
+++ branches/blender2.5/blender/source/blender/editors/object/object_intern.h 2009-08-26 12:51:27 UTC (rev 22803)
@@ -147,6 +147,9 @@
void OBJECT_OT_vertex_group_copy_to_linked(struct wmOperatorType *ot);
void OBJECT_OT_vertex_group_copy(struct wmOperatorType *ot);
+void OBJECT_OT_game_property_new(struct wmOperatorType *ot);
+void OBJECT_OT_game_property_remove(struct wmOperatorType *ot);
+
/* editkey.c */
void OBJECT_OT_shape_key_add(struct wmOperatorType *ot);
void OBJECT_OT_shape_key_remove(struct wmOperatorType *ot);
Modified: branches/blender2.5/blender/source/blender/editors/object/object_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_ops.c 2009-08-26 12:01:15 UTC (rev 22802)
+++ branches/blender2.5/blender/source/blender/editors/object/object_ops.c 2009-08-26 12:51:27 UTC (rev 22803)
@@ -150,6 +150,9 @@
WM_operatortype_append(OBJECT_OT_vertex_group_copy_to_linked);
WM_operatortype_append(OBJECT_OT_vertex_group_copy);
+ WM_operatortype_append(OBJECT_OT_game_property_new);
+ WM_operatortype_append(OBJECT_OT_game_property_remove);
+
WM_operatortype_append(OBJECT_OT_shape_key_add);
WM_operatortype_append(OBJECT_OT_shape_key_remove);
Modified: branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp
===================================================================
--- branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp 2009-08-26 12:01:15 UTC (rev 22802)
+++ branches/blender2.5/blender/source/gameengine/Expressions/PyObjectPlus.cpp 2009-08-26 12:51:27 UTC (rev 22803)
@@ -906,47 +906,49 @@
m_ignore_deprecation_warnings = ignoreDeprecationWarnings;
}
-void PyObjectPlus::ShowDeprecationWarning_func(const char* old_way,const char* new_way)
+void PyDebugLine()
{
- {
- printf("Method %s is deprecated, please use %s instead.\n", old_way, new_way);
-
- // import sys; print '\t%s:%d' % (sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
-
- PyObject *getframe, *frame;
- PyObject *f_lineno, *f_code, *co_filename;
-
- getframe = PySys_GetObject((char *)"_getframe"); // borrowed
- if (getframe) {
- frame = PyObject_CallObject(getframe, NULL);
- if (frame) {
- f_lineno= PyObject_GetAttrString(frame, "f_lineno");
- f_code= PyObject_GetAttrString(frame, "f_code");
- if (f_lineno && f_code) {
- co_filename= PyObject_GetAttrString(f_code, "co_filename");
- if (co_filename) {
-
- printf("\t%s:%d\n", _PyUnicode_AsString(co_filename), (int)PyLong_AsSsize_t(f_lineno));
-
- Py_DECREF(f_lineno);
- Py_DECREF(f_code);
- Py_DECREF(co_filename);
- Py_DECREF(frame);
- return;
- }
+ // import sys; print '\t%s:%d' % (sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
+
+ PyObject *getframe, *frame;
+ PyObject *f_lineno, *f_code, *co_filename;
+
+ getframe = PySys_GetObject((char *)"_getframe"); // borrowed
+ if (getframe) {
+ frame = PyObject_CallObject(getframe, NULL);
+ if (frame) {
+ f_lineno= PyObject_GetAttrString(frame, "f_lineno");
+ f_code= PyObject_GetAttrString(frame, "f_code");
+ if (f_lineno && f_code) {
+ co_filename= PyObject_GetAttrString(f_code, "co_filename");
+ if (co_filename) {
+
+ printf("\t%s:%d\n", _PyUnicode_AsString(co_filename), (int)PyLong_AsSsize_t(f_lineno));
+
+ Py_DECREF(f_lineno);
+ Py_DECREF(f_code);
+ Py_DECREF(co_filename);
+ Py_DECREF(frame);
+ return;
}
-
- Py_XDECREF(f_lineno);
- Py_XDECREF(f_code);
- Py_DECREF(frame);
}
+ Py_XDECREF(f_lineno);
+ Py_XDECREF(f_code);
+ Py_DECREF(frame);
}
- PyErr_Clear();
- printf("\tERROR - Could not access sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");
+
}
+ PyErr_Clear();
+ printf("\tERROR - Could not access sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");
}
+void PyObjectPlus::ShowDeprecationWarning_func(const char* old_way,const char* new_way)
+{
+ printf("Method %s is deprecated, please use %s instead.\n", old_way, new_way);
+ PyDebugLine();
+}
+
void PyObjectPlus::ClearDeprecationWarning()
{
WarnLink *wlink_next;
More information about the Bf-blender-cvs
mailing list