Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2010-02-11 09:00:16 +0300
committerDalai Felinto <dfelinto@gmail.com>2010-02-11 09:00:16 +0300
commit3189732ab6022879e0b974050adf8b5530735b90 (patch)
tree89385bc8e3eaf24daf78daa2176c4657b2a0d335 /source
parent0119072fc352d9fa6222dbb987d7194ca84fc519 (diff)
BGE: rna update for Logic Bricks
New Actuators done: * EDIT_OBJECT * SHAPE_ACTION Actuators to be done: * CONSTRAINT Actuators done already: * ALL THE OTHERS 16 + some DNA padding There is one Actuator left. This one is tricky because (as many others) the tooltip changes according to the actuator type value. Not sure how to solve this yet. I'll probably have to make different rna properties for the same values (it includes some enums this time). Not so animated to finish this one :/
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesdna/DNA_actuator_types.h42
-rw-r--r--source/blender/makesrna/intern/rna_actuator.c194
2 files changed, 193 insertions, 43 deletions
diff --git a/source/blender/makesdna/DNA_actuator_types.h b/source/blender/makesdna/DNA_actuator_types.h
index 9dbb7ecd998..a3fe14f711f 100644
--- a/source/blender/makesdna/DNA_actuator_types.h
+++ b/source/blender/makesdna/DNA_actuator_types.h
@@ -50,7 +50,7 @@ typedef struct bAddObjectActuator {
typedef struct bActionActuator {
struct bAction *act; /* Pointer to action */
- short type, flag; /* Playback type */
+ short type, flag; /* Playback type */ // not in use
int sta, end; /* Start & End frames */
char name[32]; /* For property-driven playback */
char frameProp[32]; /* Set this property to the actions current frame */
@@ -58,7 +58,7 @@ typedef struct bActionActuator {
short priority; /* Execution priority */
short end_reset; /* Ending the actuator (negative pulse) wont reset the the action to its starting frame */
short strideaxis; /* Displacement axis */
- float stridelength; /* Displacement incurred by cycle */
+ float stridelength; /* Displacement incurred by cycle */ // not in use
} bActionActuator;
typedef struct bSoundActuator {
@@ -158,31 +158,12 @@ typedef struct bRandomActuator {
} bRandomActuator;
typedef struct bMessageActuator {
- /**
- * Send to all objects with this propertyname. Empty to broadcast.
- */
- char toPropName[32];
-
- /**
- * (Possible future use) pointer to a single destination object.
- */
- struct Object *toObject;
-
- /**
- * Message Subject to send.
- */
- char subject[32];
-
- /**
- * bodyType is either 'User defined text' or PropName
- */
- short bodyType, pad1;
+ char toPropName[32]; /* Send to all objects with this propertyname. Empty to broadcast. */
+ struct Object *toObject;/* (Possible future use) pointer to a single destination object. */
+ char subject[32]; /* Message Subject to send. */
+ short bodyType, pad1; /* bodyType is either 'User defined text' or PropName */
int pad2;
-
- /**
- * Either User Defined Text or our PropName to send value of
- */
- char body[32];
+ char body[32]; /* Either User Defined Text or our PropName to send value of */
} bMessageActuator;
typedef struct bGameActuator {
@@ -408,7 +389,6 @@ typedef struct FreeCamera {
#define ACT_EDOB_LOCAL_LINV 2
#define ACT_EDOB_LOCAL_ANGV 4
-
/* editObjectActuator->flag */
#define ACT_TRACK_3D 1
@@ -416,6 +396,14 @@ typedef struct FreeCamera {
#define ACT_EDOB_REPLACE_MESH_NOGFX 2 /* use for replace mesh actuator */
#define ACT_EDOB_REPLACE_MESH_PHYS 4
+/* editObjectActuator->dyn_operation */
+#define ACT_EDOB_RESTORE_DYN 0
+#define ACT_EDOB_SUSPEND_DYN 1
+#define ACT_EDOB_ENABLE_RB 2
+#define ACT_EDOB_DISABLE_RB 3
+#define ACT_EDOB_SET_MASS 4
+
+
/* SceneActuator->type */
#define ACT_SCENE_RESTART 0
#define ACT_SCENE_SET 1
diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c
index af4f9c250c6..291776c58c9 100644
--- a/source/blender/makesrna/intern/rna_actuator.c
+++ b/source/blender/makesrna/intern/rna_actuator.c
@@ -61,8 +61,6 @@ static StructRNA* rna_Actuator_refine(struct PointerRNA *ptr)
return &RNA_RandomActuator;
case ACT_MESSAGE:
return &RNA_MessageActuator;
-// case ACT_ACTION:
-// return &RNA_ActionActuator;
case ACT_GAME:
return &RNA_GameActuator;
case ACT_VISIBILITY:
@@ -546,6 +544,14 @@ static void rna_def_constraint_actuator(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem prop_type_items[] ={
+ {ACT_CONST_TYPE_LOC, "LOC", 0, "Location Constraint", ""},
+ {ACT_CONST_TYPE_DIST, "DIST", 0, "Distance Constraint", ""},
+ {ACT_CONST_TYPE_ORI, "ORI", 0, "Orientation Constraint", ""},
+ {ACT_CONST_TYPE_FH, "FH", 0, "Force Field Constraint", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
srna= RNA_def_struct(brna, "ConstraintActuator", "Actuator");
RNA_def_struct_ui_text(srna, "Constraint Actuator", "Actuator to ..");
RNA_def_struct_sdna_from(srna, "bConstraintActuator", "data");
@@ -559,18 +565,108 @@ static void rna_def_edit_object_actuator(BlenderRNA *brna)
PropertyRNA *prop;
static EnumPropertyItem prop_type_items[] ={
- {ACT_CONST_TYPE_LOC, "LOC", 0, "Location Constraint", ""},
- {ACT_CONST_TYPE_DIST, "DIST", 0, "Distance Constraint", ""},
- {ACT_CONST_TYPE_ORI, "ORI", 0, "Orientation Constraint", ""},
- {ACT_CONST_TYPE_FH, "FH", 0, "Force Field Constraint", ""},
- {0, NULL, 0, NULL, NULL}
- };
+ {ACT_EDOB_ADD_OBJECT, "ADDOBJECT", 0, "Add Object", ""},
+ {ACT_EDOB_END_OBJECT, "ENDOBJECT", 0, "End Object", ""},
+ {ACT_EDOB_REPLACE_MESH, "REPLACEMESH", 0, "Replace Mesh", ""},
+ {ACT_EDOB_TRACK_TO, "TRACKTO", 0, "Track to", ""},
+ {ACT_EDOB_DYNAMICS, "DYNAMICS", 0, "Dynamics", ""},
+ {0, NULL, 0, NULL, NULL} };
+
+ static EnumPropertyItem prop_dyn_items[] ={
+ {ACT_EDOB_RESTORE_DYN, "RESTOREDYN", 0, "Restore Dynamics", ""},
+ {ACT_EDOB_SUSPEND_DYN, "SUSPENDDYN", 0, "Suspend Dynamics", ""},
+ {ACT_EDOB_ENABLE_RB, "ENABLERIGIDBOBY", 0, "Enable Rigid Body", ""},
+ {ACT_EDOB_DISABLE_RB, "DISABLERIGIDBOBY", 0, "Disable Rigid Body", ""},
+ {ACT_EDOB_SET_MASS, "SETMASS", 0, "Set Mass", ""},
+ {0, NULL, 0, NULL, NULL} };
srna= RNA_def_struct(brna, "EditObjectActuator", "Actuator");
- RNA_def_struct_ui_text(srna, "Edit Object Actuator", "Actuator to handle real-time constraints");
+ RNA_def_struct_ui_text(srna, "Edit Object Actuator", "Actuator used to edit objects");
RNA_def_struct_sdna_from(srna, "bEditObjectActuator", "data");
- //XXX
+ prop= RNA_def_property(srna, "type", 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, "Edit Object", "The mode of the actuator");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "dynamic_operation", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "dyn_operation");
+ RNA_def_property_enum_items(prop, prop_dyn_items);
+ RNA_def_property_ui_text(prop, "Dynamic Operation", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_pointer_sdna(prop, NULL, "ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Object", "Add this Object and all its children (cant be on an visible layer)");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "track_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_pointer_sdna(prop, NULL, "ob");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Object", "Track to this Object");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "mesh", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Mesh");
+ RNA_def_property_pointer_sdna(prop, NULL, "me");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Mesh", "Replace the existing, when left blank 'Phys' will remake the existing physics mesh");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "time", PROP_INT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 0, 2000, 1, 1);
+ RNA_def_property_ui_text(prop, "Time", "Duration the new Object lives or the track takes");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "mass", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 0, 10000, 1, 0.01);
+ RNA_def_property_ui_text(prop, "Mass", "The mass of the object");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ /* floats 3 Arrays*/
+ prop= RNA_def_property(srna, "linear_velocity", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "linVelocity");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_range(prop, -100.0, 100.0, 0.1, 0.01);
+ RNA_def_property_ui_text(prop, "Linear Velocity", "Velocity upon creation");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "angular_velocity", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_float_sdna(prop, NULL, "angVelocity");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_range(prop, -10000.0, 10000.0, 1.0, 0.01);
+ RNA_def_property_ui_text(prop, "Angular Velocity", "Angular velocity upon creation");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ /* booleans */
+ prop= RNA_def_property(srna, "local_linear_velocity", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "localflag", ACT_EDOB_LOCAL_LINV);
+ RNA_def_property_ui_text(prop, "L", "Apply the transformation locally");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "local_angular_velocity", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "localflag", ACT_EDOB_LOCAL_ANGV);
+ RNA_def_property_ui_text(prop, "L", "Apply the rotation locally");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "replace_display_mesh", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_EDOB_REPLACE_MESH_NOGFX);
+ RNA_def_property_ui_text(prop, "Gfx", "Replace the display mesh");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "replace_physics_mesh", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_EDOB_REPLACE_MESH_PHYS);
+ RNA_def_property_ui_text(prop, "Phys", "Replace the physics mesh (triangle bounds only - compound shapes not supported)");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "enable_3d_tracking", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_TRACK_3D);
+ RNA_def_property_ui_text(prop, "3D", "Enable 3D tracking");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
}
static void rna_def_scene_actuator(BlenderRNA *brna)
@@ -846,7 +942,7 @@ static void rna_def_visibility_actuator(BlenderRNA *brna)
prop= RNA_def_property(srna, "children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_VISIBILITY_RECURSIVE);
- RNA_def_property_ui_text(prop, "Children", "Sets all the children of this object to the same visibility/occlusion recursively");
+ RNA_def_property_ui_text(prop, "Children", "Set all the children of this object to the same visibility/occlusion recursively");
RNA_def_property_update(prop, NC_LOGIC, NULL);
}
@@ -953,12 +1049,79 @@ static void rna_def_parent_actuator(BlenderRNA *brna)
static void rna_def_shape_action_actuator(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem prop_type_items[] ={
+ {ACT_ACTION_PLAY, "PLAY", 0, "Play", ""},
+ {ACT_ACTION_FLIPPER, "FLIPPER", 0, "Flipper", ""},
+ {ACT_ACTION_LOOP_STOP, "LOOPSTOP", 0, "Loop Stop", ""},
+ {ACT_ACTION_LOOP_END, "LOOPEND", 0, "Loop End", ""},
+ {ACT_ACTION_FROM_PROP, "PROPERTY", 0, "Property", ""},
+#ifdef __NLA_ACTION_BY_MOTION_ACTUATOR
+ {ACT_ACTION_MOTION, "MOTION", 0, "Displacement", ""},
+#endif
+ {0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "ShapeActionActuator", "Actuator");
RNA_def_struct_ui_text(srna, "Shape Action Actuator", "Actuator to ..");
- RNA_def_struct_sdna_from(srna, "bShapeActionActuator", "data");
+ RNA_def_struct_sdna_from(srna, "bActionActuator", "data");
+
+ prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, prop_type_items);
+ RNA_def_property_ui_text(prop, "Action type", "Action playback type");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
- //XXX
+ prop= RNA_def_property(srna, "action", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "act");
+ RNA_def_property_struct_type(prop, "Action");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Action", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "continue_last_frame", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "end_reset", 1);
+ RNA_def_property_ui_text(prop, "Continue", "Restore last frame when switching on/off, otherwise play from the start each time");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "property", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "name");
+ RNA_def_property_ui_text(prop, "Property", "Use this property to define the Action position");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "sta");
+ RNA_def_property_range(prop, 0, MAXFRAME);
+ RNA_def_property_ui_text(prop, "Start frame", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "end");
+ RNA_def_property_range(prop, 0, MAXFRAME);
+ RNA_def_property_ui_text(prop, "End frame", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "blendin", PROP_INT, PROP_NONE);
+ RNA_def_property_range(prop, 0, 32767);
+ RNA_def_property_ui_text(prop, "Blendin", "Number of frames of motion blending");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "priority", PROP_INT, PROP_NONE);
+ RNA_def_property_range(prop, 0, 100);
+ RNA_def_property_ui_text(prop, "Priority", "Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "frame_property", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "frameProp");
+ RNA_def_property_ui_text(prop, "Frame Property", "Assign the action's current frame number to this property");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+#ifdef __NLA_ACTION_BY_MOTION_ACTUATOR
+ prop= RNA_def_property(srna, "stride_length", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "stridelength");
+ RNA_def_property_range(prop, 0.0, 2500.0);
+ RNA_def_property_ui_text(prop, "Cycle", "Distance covered by a single cycle of the action");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+#endif
}
static void rna_def_state_actuator(BlenderRNA *brna)
@@ -1062,16 +1225,15 @@ void RNA_def_actuator(BlenderRNA *brna)
rna_def_sound_actuator(brna);
rna_def_property_actuator(brna);
rna_def_constraint_actuator(brna); // to be done
- rna_def_edit_object_actuator(brna); // to be done
+ rna_def_edit_object_actuator(brna);
rna_def_scene_actuator(brna);
rna_def_random_actuator(brna);
rna_def_message_actuator(brna);
-// rna_def_action_actuator(brna); /* deprecated */
rna_def_game_actuator(brna);
rna_def_visibility_actuator(brna);
rna_def_twodfilter_actuator(brna);
rna_def_parent_actuator(brna);
- rna_def_shape_action_actuator(brna);// to be done
+ rna_def_shape_action_actuator(brna);
rna_def_state_actuator(brna);
rna_def_armature_actuator(brna);
}