[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26634] trunk/blender/source/blender: BGE: rna update for Logic Bricks
Dalai Felinto
dfelinto at gmail.com
Sat Feb 6 00:50:34 CET 2010
Revision: 26634
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26634
Author: dfelinto
Date: 2010-02-06 00:50:33 +0100 (Sat, 06 Feb 2010)
Log Message:
-----------
BGE: rna update for Logic Bricks
Sensor and Controllers: small fixes and suggestion (comments) for future improvement - mainly to replace text properties to material, text or object datablocks.
Actuators done:
* IPO
* CAMERA
Actuators to be done:
All the others (their structure is in the file)
Adding NC_LOGIC
** If someone want to help on that:
Files used for actuator RNA:
- logic_window.c
- DNA_actuator_types.h
*** my first big RNA operation. critics/suggestions are welcome
**** padded some DNA variables that were not been used.
Modified Paths:
--------------
trunk/blender/source/blender/makesdna/DNA_actuator_types.h
trunk/blender/source/blender/makesdna/DNA_sensor_types.h
trunk/blender/source/blender/makesrna/intern/rna_actuator.c
trunk/blender/source/blender/makesrna/intern/rna_controller.c
trunk/blender/source/blender/makesrna/intern/rna_sensor.c
trunk/blender/source/blender/windowmanager/WM_types.h
Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2010-02-05 22:03:19 UTC (rev 26633)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2010-02-05 23:50:33 UTC (rev 26634)
@@ -114,16 +114,16 @@
char name[32];
char frameProp[32]; /* Set this property to the actions current frame */
- short pad1, cur, butsta, butend;
+ short pad1, pad2, pad3, pad4;
} bIpoActuator;
typedef struct bCameraActuator {
struct Object *ob;
float height, min, max;
- float fac;
- short flag, axis;
- float visifac;
+ float pad;
+ short pad1, axis;
+ float pad2;
} bCameraActuator ;
typedef struct bConstraintActuator {
Modified: trunk/blender/source/blender/makesdna/DNA_sensor_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sensor_types.h 2010-02-05 22:03:19 UTC (rev 26633)
+++ trunk/blender/source/blender/makesdna/DNA_sensor_types.h 2010-02-05 23:50:33 UTC (rev 26634)
@@ -98,6 +98,7 @@
typedef struct bCollisionSensor {
char name[32]; /* property name */
char materialName[32]; /* material */
+ // struct Material *ma; // XXX remove materialName
short damptimer, damp;
short mode; /* flag to choose material or property */
short pad2;
@@ -121,6 +122,7 @@
float range;
char propname[32];
char matname[32];
+ //struct Material *ma; // XXX remove materialName
short mode;
short pad1;
int axisflag;
Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2010-02-05 22:03:19 UTC (rev 26633)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2010-02-05 23:50:33 UTC (rev 26634)
@@ -30,18 +30,67 @@
#include "rna_internal.h"
#include "DNA_actuator_types.h"
+#include "DNA_scene_types.h" // for MAXFRAMEF
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
+static StructRNA* rna_Actuator_refine(struct PointerRNA *ptr)
+{
+ bActuator *actuator= (bActuator*)ptr->data;
+
+ switch(actuator->type) {
+ case ACT_OBJECT:
+ return &RNA_ObjectActuator;
+ case ACT_IPO:
+ return &RNA_IpoActuator;
+ case ACT_CAMERA:
+ return &RNA_CameraActuator;
+ case ACT_SOUND:
+ return &RNA_SoundActuator;
+ case ACT_PROPERTY:
+ return &RNA_PropertyActuator;
+ case ACT_CONSTRAINT:
+ return &RNA_ConstraintActuator;
+ case ACT_EDIT_OBJECT:
+ return &RNA_EditObjectActuator;
+ case ACT_SCENE:
+ return &RNA_SceneActuator;
+ case ACT_RANDOM:
+ return &RNA_RandomActuator;
+ case ACT_MESSAGE:
+ return &RNA_MessageActuator;
+ case ACT_ACTION:
+ return &RNA_ActionActuator;
+ case ACT_GAME:
+ return &RNA_GameActuator;
+ case ACT_VISIBILITY:
+ return &RNA_VisibilityActuator;
+ case ACT_2DFILTER:
+ return &RNA_TwoDFilterActuator;
+ case ACT_PARENT:
+ return &RNA_ParentActuator;
+ case ACT_SHAPEACTION:
+ return &RNA_ShapeActionActuator;
+ case ACT_STATE:
+ return &RNA_StateActuator;
+ case ACT_ARMATURE:
+ return &RNA_ArmatureActuator;
+ default:
+ return &RNA_Actuator;
+ }
+}
+
#else
-void RNA_def_actuator(BlenderRNA *brna)
+void rna_def_actuator(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
static EnumPropertyItem actuator_type_items[] ={
- {ACT_OBJECT, "OBJECT", 0, "Object", ""},
+ {ACT_OBJECT, "OBJECT", 0, "Motion", ""},
{ACT_IPO, "IPO", 0, "IPO", ""},
{ACT_CAMERA, "CAMERA", 0, "Camera", ""},
{ACT_SOUND, "SOUND", 0, "Sound", ""},
@@ -51,7 +100,7 @@
{ACT_SCENE, "SCENE", 0, "Scene", ""},
{ACT_RANDOM, "RANDOM", 0, "Random", ""},
{ACT_MESSAGE, "MESSAGE", 0, "Message", ""},
- {ACT_ACTION, "ACTION", 0, "Action", ""},
+ {ACT_ACTION, "ACTION", 0, "Action", ""},
{ACT_GAME, "GAME", 0, "Game", ""},
{ACT_VISIBILITY, "VISIBILITY", 0, "Visibility", ""},
{ACT_2DFILTER, "FILTER_2D", 0, "2D Filter", ""},
@@ -63,8 +112,8 @@
srna= RNA_def_struct(brna, "Actuator", NULL);
RNA_def_struct_ui_text(srna, "Actuator", "Game engine logic brick to apply actions in the game engine.");
-
RNA_def_struct_sdna(srna, "bActuator");
+ RNA_def_struct_refine_func(srna, "rna_Actuator_refine");
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "");
@@ -77,5 +126,306 @@
}
+static void rna_def_object_actuator(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ srna= RNA_def_struct(brna, "ObjectActuator", "Actuator");
+ RNA_def_struct_ui_text(srna, "Object Actuator", "Actuator to control the object movement.");
+ RNA_def_struct_sdna_from(srna, "bObjectActuator", "data");
+
+ //XXX
+}
+
+static void rna_def_ipo_actuator(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem prop_type_items[] ={
+ {ACT_IPO_PLAY, "PLAY", 0, "Play", ""},
+ {ACT_IPO_PINGPONG, "PINGPONG", 0, "Ping Pong", ""},
+ {ACT_IPO_FLIPPER, "FLIPPER", 0, "Flipper", ""},
+ {ACT_IPO_LOOP_STOP, "STOP", 0, "Loop Stop", ""},
+ {ACT_IPO_LOOP_END, "END", 0, "Loop End", ""},
+// {ACT_IPO_KEY2KEY, "IPOCHILD", 0, "Key to Key", ""},
+ {ACT_IPO_FROM_PROP, "PROP", 0, "Property", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "IpoActuator", "Actuator");
+ RNA_def_struct_ui_text(srna, "Ipo Actuator", "Actuator to animate the object.");
+ RNA_def_struct_sdna_from(srna, "bIpoActuator", "data");
+
+ prop= RNA_def_property(srna, "play_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, "Ipo Type", "Specify the way you want to play the animation.");
+ 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_ui_range(prop, 1, MAXFRAMEF, 1, 1);
+ RNA_def_property_ui_text(prop, "Start Frame", "");
+ RNA_def_property_update(prop, NC_SCENE, NULL);
+
+ prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "end");
+ RNA_def_property_ui_range(prop, 1, MAXFRAMEF, 1, 1);
+ RNA_def_property_ui_text(prop, "End Frame", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "prop", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "name");
+ RNA_def_property_ui_text(prop, "Prop", "Use this property to define the Ipo position.");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "frame_prop", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "frameProp");
+ RNA_def_property_ui_text(prop, "FrameProp", "Assign the action's current frame number to this property");
+
+ /* booleans */
+ prop= RNA_def_property(srna, "ipo_force", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOFORCE);
+ RNA_def_property_ui_text(prop, "Force", "Apply Ipo as a global or local force depending on the local option (dynamic objects only)");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+ //logic_window::change_ipo_actuator
+
+ prop= RNA_def_property(srna, "ipo_local", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOLOCAL);
+ RNA_def_property_ui_text(prop, "L", "Let the ipo acts in local coordinates, used in Force and Add mode.");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "ipo_child", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOCHILD);
+ RNA_def_property_ui_text(prop, "Child", "Update IPO on all children Objects as well");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "ipo_add", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOADD);
+ RNA_def_property_ui_text(prop, "Add", "Ipo is added to the current loc/rot/scale in global or local coordinate according to Local flag");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+ //logic_window::change_ipo_actuator
+}
+
+static void rna_def_camera_actuator(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem prop_axis_items[] ={
+ {(float)'x', "X", 0, "X", "Camera tries to get behind the X axis"},
+ {(float)'y', "Y", 0, "Y", "Camera tries to get behind the Y axis"},
+ {0, NULL, 0, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "CameraActuator", "Actuator");
+ RNA_def_struct_ui_text(srna, "Camera Actuator", "Actuator to ...");
+ RNA_def_struct_sdna_from(srna, "bCameraActuator", "data");
+
+ 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, "Camera Object", "Look at this Object");
+ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
+
+ /* floats */
+ prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1);
+ RNA_def_property_ui_text(prop, "Height", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1);
+ RNA_def_property_ui_text(prop, "Min", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 0.0, 20.0, 0.1, 0.1);
+ RNA_def_property_ui_text(prop, "Max", "");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+
+ /* x/y */
+ // It could be changed to be a regular ENUM instead of this weird "(float)string enum"
+ prop= RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "axis");
+ RNA_def_property_enum_items(prop, prop_axis_items);
+ RNA_def_property_ui_text(prop, "Axis", "Specify the axy the Camera will try to get behind.");
+ RNA_def_property_update(prop, NC_LOGIC, NULL);
+}
+
+static void rna_def_sound_actuator(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ srna= RNA_def_struct(brna, "SoundActuator", "Actuator");
+ RNA_def_struct_ui_text(srna, "Sound Actuator", "Actuator to ...");
+ RNA_def_struct_sdna_from(srna, "bSoundActuator", "data");
+
+ //XXX
+}
+
+static void rna_def_property_actuator(BlenderRNA *brna)
+{
+ StructRNA *srna;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list