Hi Nick, I think you may need to set ID_NEW in sca.c::set_sca_new_poins_ob for your new Object structs as well. (as we are doing for the other Object structs).
Regards, Dalai 2010/5/31 Nick Samarin <[email protected]>: > Revision: 29111 > > http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29111 > Author: nicks > Date: 2010-06-01 00:35:22 +0200 (Tue, 01 Jun 2010) > > Log Message: > ----------- > Added new actuator type for following steering behaviors: seek, flee, path > following; renamed KX_Pathfinder to KX_NavMeshObject > > Modified Paths: > -------------- > branches/soc-2010-nicks/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj > branches/soc-2010-nicks/source/blender/blenkernel/intern/sca.c > branches/soc-2010-nicks/source/blender/blenloader/intern/readfile.c > branches/soc-2010-nicks/source/blender/blenloader/intern/writefile.c > branches/soc-2010-nicks/source/blender/editors/space_logic/logic_window.c > branches/soc-2010-nicks/source/blender/makesdna/DNA_actuator_types.h > branches/soc-2010-nicks/source/blender/makesrna/intern/rna_actuator.c > > branches/soc-2010-nicks/source/gameengine/Converter/BL_BlenderDataConversion.cpp > branches/soc-2010-nicks/source/gameengine/Converter/KX_ConvertActuators.cpp > branches/soc-2010-nicks/source/gameengine/GameLogic/SCA_IActuator.h > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_KetsjiEngine.cpp > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_PythonInitTypes.cpp > > Added Paths: > ----------- > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_NavMeshObject.cpp > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_NavMeshObject.h > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_SteeringActuator.cpp > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_SteeringActuator.h > > Removed Paths: > ------------- > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp > branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.h > > Modified: > branches/soc-2010-nicks/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj > =================================================================== > --- > branches/soc-2010-nicks/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj > 2010-05-31 20:48:22 UTC (rev 29110) > +++ > branches/soc-2010-nicks/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -552,7 +552,7 @@ > > > </File> > <File > - > RelativePath="..\..\..\source\gameengine\Ketsji\KX_Pathfinder.cpp" > + > RelativePath="..\..\..\source\gameengine\Ketsji\KX_NavMeshObject.cpp" > > > </File> > <File > @@ -683,6 +683,10 @@ > > > </File> > <File > + > RelativePath="..\..\..\source\gameengine\Ketsji\KX_SteeringActuator.cpp" > + > > + </File> > + <File > > RelativePath="..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.cpp" > > > </File> > @@ -857,11 +861,11 @@ > > > </File> > <File > - > RelativePath="..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.h" > + > RelativePath="..\..\..\source\gameengine\Ketsji\KX_NavMeshObject.h" > > > </File> > <File > - > RelativePath="..\..\..\source\gameengine\Ketsji\KX_Pathfinder.h" > + > RelativePath="..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.h" > > > </File> > <File > @@ -1000,6 +1004,10 @@ > > > </File> > <File > + > RelativePath="..\..\..\source\gameengine\Ketsji\KX_SteeringActuator.h" > + > > + </File> > + <File > > RelativePath="..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.h" > > > </File> > > Modified: branches/soc-2010-nicks/source/blender/blenkernel/intern/sca.c > =================================================================== > --- branches/soc-2010-nicks/source/blender/blenkernel/intern/sca.c > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/blenkernel/intern/sca.c > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -468,6 +468,8 @@ > case ACT_ARMATURE: > act->data = MEM_callocN(sizeof( bArmatureActuator ), "armature > act"); > break; > + case ACT_STEERING: > + act->data = MEM_callocN(sizeof( bSteeringActuator), "steering > act"); > default: > ; /* this is very severe... I cannot make any memory for this > */ > /* logic brick... > */ > @@ -611,6 +613,7 @@ > bMessageActuator *ma; > bParentActuator *para; > bArmatureActuator *aa; > + bSteeringActuator *sta; > > sens= obt->sensors.first; > while(sens) { > @@ -658,6 +661,11 @@ > if (aa->target == ob) aa->target = NULL; > if (aa->subtarget == ob) aa->subtarget = NULL; > break; > + case ACT_STEERING: > + sta = act->data; > + if (sta->target==ob) sta->target = NULL; > + if (sta->navmesh==ob) sta->navmesh = NULL; > + break; > } > act= act->next; > } > > Modified: branches/soc-2010-nicks/source/blender/blenloader/intern/readfile.c > =================================================================== > --- branches/soc-2010-nicks/source/blender/blenloader/intern/readfile.c > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/blenloader/intern/readfile.c > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -3612,6 +3612,11 @@ > arma->target= newlibadr(fd, > ob->id.lib, arma->target); > arma->subtarget= newlibadr(fd, > ob->id.lib, arma->subtarget); > } > + else if(act->type==ACT_STEERING) { > + bSteeringActuator *steeringa = > act->data; > + steeringa->target = newlibadr(fd, > ob->id.lib, steeringa->target); > + steeringa->navmesh = newlibadr(fd, > ob->id.lib, steeringa->navmesh); > + } > act= act->next; > } > > @@ -11745,6 +11750,11 @@ > bArmatureActuator *arma= act->data; > expand_doit(fd, mainvar, arma->target); > } > + else if(act->type==ACT_STEERING) { > + bSteeringActuator *sta= act->data; > + expand_doit(fd, mainvar, sta->target); > + expand_doit(fd, mainvar, sta->navmesh); > + } > act= act->next; > } > > > Modified: branches/soc-2010-nicks/source/blender/blenloader/intern/writefile.c > =================================================================== > --- branches/soc-2010-nicks/source/blender/blenloader/intern/writefile.c > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/blenloader/intern/writefile.c > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -858,6 +858,9 @@ > case ACT_ARMATURE: > writestruct(wd, DATA, "bArmatureActuator", 1, > act->data); > break; > + case ACT_STEERING: > + writestruct(wd, DATA, "bSteeringActuator", 1, > act->data); > + break; > default: > ; /* error: don't know how to write this file */ > } > > Modified: > branches/soc-2010-nicks/source/blender/editors/space_logic/logic_window.c > =================================================================== > --- branches/soc-2010-nicks/source/blender/editors/space_logic/logic_window.c > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/editors/space_logic/logic_window.c > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -710,6 +710,8 @@ > return "State"; > case ACT_ARMATURE: > return "Armature"; > + case ACT_STEERING: > + return "Steering"; > } > return "unknown"; > } > @@ -2895,7 +2897,6 @@ > uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, > (float)yco, 1); > yco-= ysize; > break; > - > default: > ysize= 4; > > @@ -4232,6 +4233,20 @@ > uiItemR(row, ptr, "children", 0, NULL, 0); > } > > +static void draw_actuator_steering(uiLayout *layout, PointerRNA *ptr) > +{ > + uiLayout *row; > + > + uiItemR(layout, ptr, "mode", 0, NULL, 0); > + uiItemR(layout, ptr, "target", 0, NULL, 0); > + uiItemR(layout, ptr, "navmesh", 0, NULL, 0); > + > + row = uiLayoutRow(layout, 0); > + uiItemR(row, ptr, "distance", 0, NULL, 0); > + uiItemR(row, ptr, "movement", 0, NULL, 0); > +} > + > + > void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr, bContext *C) > { > uiLayout *box; > @@ -4296,6 +4311,8 @@ > case ACT_VISIBILITY: > draw_actuator_visibility(box, ptr); > break; > + case ACT_STEERING: > + draw_actuator_steering(box, ptr); > } > } > > > Modified: branches/soc-2010-nicks/source/blender/makesdna/DNA_actuator_types.h > =================================================================== > --- branches/soc-2010-nicks/source/blender/makesdna/DNA_actuator_types.h > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/makesdna/DNA_actuator_types.h > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -214,6 +214,15 @@ > struct Object *subtarget; > } bArmatureActuator; > > +typedef struct bSteeringActuator { > + char pad[4]; > + int type; /* 0=seek, 1=flee, 2=path following */ > + float dist; > + float movement; > + struct Object *target; > + struct Object *navmesh; > +} bSteeringActuator; > + > typedef struct bActuator { > struct bActuator *next, *prev, *mynew; > short type; > @@ -286,6 +295,7 @@ > #define ACT_SHAPEACTION 21 > #define ACT_STATE 22 > #define ACT_ARMATURE 23 > +#define ACT_STEERING 24 > > /* actuator flag */ > #define ACT_SHOW 1 > @@ -502,6 +512,11 @@ > #define ACT_CAMERA_X (float)'x' > #define ACT_CAMERA_Y (float)'y' > > +/* steeringactuator->type */ > +#define ACT_STEERING_SEEK 0 > +#define ACT_STEERING_FLEE 1 > +#define ACT_STEERING_PATHFOLLOWING 2 > + > #endif > > > > Modified: > branches/soc-2010-nicks/source/blender/makesrna/intern/rna_actuator.c > =================================================================== > --- branches/soc-2010-nicks/source/blender/makesrna/intern/rna_actuator.c > 2010-05-31 20:48:22 UTC (rev 29110) > +++ branches/soc-2010-nicks/source/blender/makesrna/intern/rna_actuator.c > 2010-05-31 22:35:22 UTC (rev 29111) > @@ -54,6 +54,7 @@ > {ACT_SOUND, "SOUND", 0, "Sound", ""}, > {ACT_STATE, "STATE", 0, "State", ""}, > {ACT_VISIBILITY, "VISIBILITY", 0, "Visibility", ""}, > + {ACT_STEERING, "STEERING", 0, "Steering", ""}, > {0, NULL, 0, NULL, NULL}}; > > EnumPropertyItem edit_object_type_items[] ={ > @@ -109,6 +110,8 @@ > return &RNA_StateActuator; > case ACT_ARMATURE: > return &RNA_ArmatureActuator; > + case ACT_STEERING: > + return &RNA_SteeringActuator; > default: > return &RNA_Actuator; > } > @@ -401,6 +404,7 @@ > RNA_enum_items_add_value(&item, &totitem, actuator_type_items, > ACT_PROPERTY); > RNA_enum_items_add_value(&item, &totitem, actuator_type_items, > ACT_RANDOM); > RNA_enum_items_add_value(&item, &totitem, actuator_type_items, > ACT_SCENE); > + RNA_enum_items_add_value(&item, &totitem, actuator_type_items, > ACT_STEERING); > > if (ob != NULL) { > if (ob->type==OB_MESH){ > @@ -1841,6 +1845,54 @@ > RNA_def_property_update(prop, NC_LOGIC, NULL); > } > > +static void rna_def_steering_actuator(BlenderRNA *brna) > +{ > + StructRNA *srna; > + PropertyRNA *prop; > + > + static EnumPropertyItem prop_type_items[] ={ > + {ACT_STEERING_SEEK, "SEEK", 0, "Seek", ""}, > + {ACT_STEERING_FLEE, "FLEE", 0, "Flee", ""}, > + {ACT_STEERING_PATHFOLLOWING, "PATHFOLLOWING", 0, "Path > following", ""}, > + {0, NULL, 0, NULL, NULL}}; > + > + srna= RNA_def_struct(brna, "SteeringActuator", "Actuator"); > + RNA_def_struct_ui_text(srna, "Steering Actuator", ""); > + RNA_def_struct_sdna_from(srna, "bSteeringActuator", "data"); > + > + prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); > + RNA_def_property_enum_sdna(prop, NULL, "type"); > + RNA_def_property_enum_items(prop, prop_type_items); > + RNA_def_property_ui_text(prop, "Behavior", ""); > + RNA_def_property_update(prop, NC_LOGIC, NULL); > + > + prop= RNA_def_property(srna, "movement", PROP_FLOAT, PROP_NONE); > + RNA_def_property_float_sdna(prop, NULL, "movement"); > + RNA_def_property_range(prop, 0.0, 1000.0); > + RNA_def_property_ui_text(prop, "Move", "Movement value"); > + RNA_def_property_update(prop, NC_LOGIC, NULL); > + > + prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE); > + RNA_def_property_float_sdna(prop, NULL, "dist"); > + RNA_def_property_range(prop, 0.0, 1000.0); > + RNA_def_property_ui_text(prop, "Dist", "Relax distance"); > + RNA_def_property_update(prop, NC_LOGIC, NULL); > + > + prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); > + RNA_def_property_struct_type(prop, "Object"); > + RNA_def_property_pointer_sdna(prop, NULL, "target"); > + RNA_def_property_flag(prop, PROP_EDITABLE); > + RNA_def_property_ui_text(prop, "Target Object", "Set target object"); > + RNA_def_property_update(prop, NC_LOGIC, NULL); > + > + prop= RNA_def_property(srna, "navmesh", PROP_POINTER, PROP_NONE); > + RNA_def_property_struct_type(prop, "Object"); > + RNA_def_property_pointer_sdna(prop, NULL, "navmesh"); > + RNA_def_property_flag(prop, PROP_EDITABLE); > + RNA_def_property_ui_text(prop, "NavMesh Object", "Navigation mesh"); > + RNA_def_property_update(prop, NC_LOGIC, NULL); > +} > + > void RNA_def_actuator(BlenderRNA *brna) > { > rna_def_actuator(brna); > @@ -1863,6 +1915,7 @@ > rna_def_shape_action_actuator(brna); > rna_def_state_actuator(brna); > > @@ Diff output truncated at 10240 characters. @@ > > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
