Revision: 37455 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37455 Author: dfelinto Date: 2011-06-13 17:08:33 +0000 (Mon, 13 Jun 2011) Log Message: ----------- BGE Patch: [#27425] Allow to change the damping of the camera actuator ########## original name: "Allow to change the strenght of the "go behind" constraint of the camera actuator"
The camera actuator is an actuator that drive the camera to follow an object, with a set of constraint. Currently, when the object followed rotate on himself (like a person, or an helicopter), the camera is really slow to go behind (at least 10 seconds). This patch gives the UI to tweak the strenght of the 'go behind'[named damping] constraint. ########### epydocs (rst) updated too Modified Paths: -------------- trunk/blender/doc/python_api/rst/bge.types.rst trunk/blender/source/blender/blenkernel/intern/sca.c trunk/blender/source/blender/blenloader/intern/readfile.c trunk/blender/source/blender/editors/space_logic/logic_window.c trunk/blender/source/blender/makesdna/DNA_actuator_types.h trunk/blender/source/blender/makesrna/intern/rna_actuator.c trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.h Modified: trunk/blender/doc/python_api/rst/bge.types.rst =================================================================== --- trunk/blender/doc/python_api/rst/bge.types.rst 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/doc/python_api/rst/bge.types.rst 2011-06-13 17:08:33 UTC (rev 37455) @@ -710,6 +710,12 @@ Applies changes to a camera. + .. attribute:: damping + + strength of of the camera following movement. + + :type: float + .. attribute:: min minimum distance to the target object maintained by the actuator. Modified: trunk/blender/source/blender/blenkernel/intern/sca.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/sca.c 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/blender/blenkernel/intern/sca.c 2011-06-13 17:08:33 UTC (rev 37455) @@ -430,6 +430,7 @@ act->data= MEM_callocN(sizeof(bCameraActuator), "camact"); ca = act->data; ca->axis = ACT_CAMERA_X; + ca->damping = 1.0/32.0; break; case ACT_EDIT_OBJECT: act->data= MEM_callocN(sizeof(bEditObjectActuator), "editobact"); Modified: trunk/blender/source/blender/blenloader/intern/readfile.c =================================================================== --- trunk/blender/source/blender/blenloader/intern/readfile.c 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/blender/blenloader/intern/readfile.c 2011-06-13 17:08:33 UTC (rev 37455) @@ -11647,6 +11647,21 @@ } } } + + { + /* add default value for behind strength of camera actuator */ + Object *ob; + bActuator *act; + for(ob = main->object.first; ob; ob= ob->id.next) { + for(act= ob->actuators.first; act; act= act->next) { + if (act->type == ACT_CAMERA) { + bCameraActuator *ba= act->data; + + ba->damping = 1.0/32.0; + } + } + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c =================================================================== --- trunk/blender/source/blender/editors/space_logic/logic_window.c 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/blender/editors/space_logic/logic_window.c 2011-06-13 17:08:33 UTC (rev 37455) @@ -3786,6 +3786,8 @@ row = uiLayoutRow(layout, 1); uiItemR(row, ptr, "min", 0, NULL, ICON_NONE); uiItemR(row, ptr, "max", 0, NULL, ICON_NONE); + + uiItemR(layout, ptr, "damping", 0, NULL, ICON_NONE); } static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext *C) Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h =================================================================== --- trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2011-06-13 17:08:33 UTC (rev 37455) @@ -133,7 +133,7 @@ typedef struct bCameraActuator { struct Object *ob; float height, min, max; - float pad; + float damping; short pad1, axis; float pad2; } bCameraActuator ; Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2011-06-13 17:08:33 UTC (rev 37455) @@ -922,6 +922,13 @@ RNA_def_property_ui_text(prop, "Max", ""); RNA_def_property_update(prop, NC_LOGIC, NULL); + prop= RNA_def_property(srna, "damping", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "damping"); + RNA_def_property_range(prop, 0, 10.0); + RNA_def_property_ui_range(prop, 0, 5.0, 1, 2); + RNA_def_property_ui_text(prop, "Damping", "Specify the strength of the constraint that drive the camera behind the target"); + RNA_def_property_update(prop, NC_LOGIC, NULL); + /* x/y */ prop= RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "axis"); Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp =================================================================== --- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2011-06-13 17:08:33 UTC (rev 37455) @@ -287,7 +287,8 @@ camact->height, camact->min, camact->max, - camact->axis=='x'); + camact->axis=='x', + camact->damping); baseact = tmpcamact; } break; Modified: trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp =================================================================== --- trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.cpp 2011-06-13 17:08:33 UTC (rev 37455) @@ -54,14 +54,16 @@ float hght, float minhght, float maxhght, - bool xytog + bool xytog, + float damping ): SCA_IActuator(gameobj, KX_ACT_CAMERA), m_ob (obj), m_height (hght), m_minHeight (minhght), m_maxHeight (maxhght), - m_x (xytog) + m_x (xytog), + m_damping (damping) { if (m_ob) m_ob->RegisterActuator(this); @@ -283,7 +285,7 @@ } inp= fp1[0]*fp2[0] + fp1[1]*fp2[1] + fp1[2]*fp2[2]; - fac= (-1.0 + inp)/32.0; + fac= (-1.0 + inp) * m_damping; from[0]+= fac*fp1[0]; from[1]+= fac*fp1[1]; @@ -390,6 +392,7 @@ KX_PYATTRIBUTE_FLOAT_RW("height",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_height), KX_PYATTRIBUTE_BOOL_RW("useXY",KX_CameraActuator,m_x), KX_PYATTRIBUTE_RW_FUNCTION("object", KX_CameraActuator, pyattr_get_object, pyattr_set_object), + KX_PYATTRIBUTE_FLOAT_RW("damping",0.f,10.f,KX_CameraActuator,m_damping), {NULL} }; Modified: trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.h =================================================================== --- trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.h 2011-06-13 15:07:36 UTC (rev 37454) +++ trunk/blender/source/gameengine/Ketsji/KX_CameraActuator.h 2011-06-13 17:08:33 UTC (rev 37455) @@ -73,6 +73,9 @@ /** xy toggle (pick one): true == x, false == y */ bool m_x; + + /** damping (float), */ + float m_damping; /* get the KX_IGameObject with this name */ CValue *findObject(char *obName); @@ -95,7 +98,8 @@ float hght, float minhght, float maxhght, - bool xytog + bool xytog, + float damping ); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs