[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29111] branches/soc-2010-nicks: Added new actuator type for following steering behaviors: seek, flee, path following; renamed KX_Pathfinder to KX_NavMeshObject

Dalai Felinto dfelinto at gmail.com
Tue Jun 1 03:12:37 CEST 2010


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 <nicks1987 at bigmir.net>:
> 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
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>


More information about the Bf-committers mailing list