[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59146] trunk/blender/source: BGE: The Action Actuator can now make use of additive blending.
Mitchell Stokes
mogurijin at gmail.com
Thu Aug 15 01:32:00 CEST 2013
Revision: 59146
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59146
Author: moguri
Date: 2013-08-14 23:32:00 +0000 (Wed, 14 Aug 2013)
Log Message:
-----------
BGE: The Action Actuator can now make use of additive blending.
Modified Paths:
--------------
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/BL_ActionActuator.cpp
trunk/blender/source/gameengine/Converter/BL_ActionActuator.h
trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c 2013-08-14 23:32:00 UTC (rev 59146)
@@ -1465,6 +1465,7 @@
row = uiLayoutRow(layout, FALSE);
uiItemR(row, ptr, "layer", 0, NULL, ICON_NONE);
uiItemR(row, ptr, "layer_weight", 0, NULL, ICON_NONE);
+ uiItemR(row, ptr, "blend_mode", 0, "", ICON_NONE);
uiItemPointerR(layout, ptr, "frame_property", &settings_ptr, "properties", NULL, ICON_NONE);
Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2013-08-14 23:32:00 UTC (rev 59146)
@@ -59,7 +59,7 @@
short layer; /* Animation layer */
short end_reset; /* Ending the actuator (negative pulse) wont reset the the action to its starting frame */
short strideaxis; /* Displacement axis */
- short pad;
+ short blend_mode; /* Layer blending mode */
float stridelength; /* Displacement incurred by cycle */ // not in use
float layer_weight; /* How much of the previous layer to use for blending. (<0 = disable, 0 = add mode) */
} bActionActuator;
@@ -341,6 +341,10 @@
#define ACT_ACTION_FROM_PROP 6
#define ACT_ACTION_MOTION 7
+/* actionactuator->blend_mode */
+#define ACT_ACTION_BLEND 0
+#define ACT_ACTION_ADD 1
+
/* ipoactuator->type */
#define ACT_IPO_PLAY 0
#define ACT_IPO_PINGPONG 1
Modified: trunk/blender/source/blender/makesrna/intern/rna_actuator.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/blender/makesrna/intern/rna_actuator.c 2013-08-14 23:32:00 UTC (rev 59146)
@@ -593,6 +593,12 @@
{0, NULL, 0, NULL, NULL}
};
+ static EnumPropertyItem prop_blend_items[] = {
+ {ACT_ACTION_BLEND, "BLEND", 0, "Blend", ""},
+ {ACT_ACTION_ADD, "ADD", 0, "Add", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
srna = RNA_def_struct(brna, "ActionActuator", "Actuator");
RNA_def_struct_ui_text(srna, "Action Actuator", "Actuator to control the object movement");
RNA_def_struct_sdna_from(srna, "bActionActuator", "data");
@@ -656,7 +662,7 @@
prop = RNA_def_property(srna, "layer_weight", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Layer Weight",
- "How much of the previous layer to blend into this one (0 = add mode)");
+ "How much of the previous layer to blend into this one");
RNA_def_property_update(prop, NC_LOGIC, NULL);
prop = RNA_def_property(srna, "frame_property", PROP_STRING, PROP_NONE);
@@ -691,6 +697,12 @@
RNA_def_property_ui_text(prop, "Child", "Update Action on all children Objects as well");
RNA_def_property_update(prop, NC_LOGIC, NULL);
+ prop = RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "blend_mode");
+ RNA_def_property_enum_items(prop, prop_blend_items);
+ RNA_def_property_ui_text(prop, "Blend Mode", "Determines how this layer is blended with previous layers");
+ 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");
Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.cpp 2013-08-14 23:32:00 UTC (rev 59146)
@@ -66,6 +66,7 @@
float endtime,
struct bAction *action,
short playtype,
+ short blend_mode,
short blendin,
short priority,
short layer,
@@ -88,6 +89,7 @@
m_stridelength(stride),
m_layer_weight(layer_weight),
m_playtype(playtype),
+ m_blendmode(blend_mode),
m_priority(priority),
m_layer(layer),
m_ipo_flags(ipo_flags),
@@ -187,6 +189,7 @@
bool bUseContinue = false;
KX_GameObject *obj = (KX_GameObject*)GetParent();
short playtype = BL_Action::ACT_MODE_PLAY;
+ short blendmode = (m_blendmode == ACT_ACTION_ADD) ? BL_Action::ACT_BLEND_ADD : BL_Action::ACT_BLEND_BLEND;
float start = m_startframe;
float end = m_endframe;
@@ -283,7 +286,7 @@
ResetStartTime(curtime);
}
- if (obj->PlayAction(m_action->id.name+2, start, end, m_layer, m_priority, m_blendin, playtype, m_layer_weight, m_ipo_flags))
+ if (obj->PlayAction(m_action->id.name+2, start, end, m_layer, m_priority, m_blendin, playtype, m_layer_weight, m_ipo_flags, 1.f, blendmode))
{
m_flag |= ACT_FLAG_ACTIVE;
if (bUseContinue)
@@ -328,7 +331,7 @@
// Convert into a play action and play back to the beginning
end = start;
start = obj->GetActionFrame(m_layer);
- obj->PlayAction(m_action->id.name+2, start, end, m_layer, m_priority, 0, BL_Action::ACT_MODE_PLAY, m_layer_weight, m_ipo_flags);
+ obj->PlayAction(m_action->id.name+2, start, end, m_layer, m_priority, 0, BL_Action::ACT_MODE_PLAY, m_layer_weight, m_ipo_flags, 1.f, blendmode);
m_flag |= ACT_FLAG_PLAY_END;
break;
Modified: trunk/blender/source/gameengine/Converter/BL_ActionActuator.h
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_ActionActuator.h 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/gameengine/Converter/BL_ActionActuator.h 2013-08-14 23:32:00 UTC (rev 59146)
@@ -48,6 +48,7 @@
float endtime,
struct bAction *action,
short playtype,
+ short blend_mode,
short blendin,
short priority,
short layer,
@@ -129,6 +130,7 @@
float m_stridelength;
float m_layer_weight;
short m_playtype;
+ short m_blendmode;
short m_priority;
short m_layer;
short m_ipo_flags;
Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2013-08-14 23:31:49 UTC (rev 59145)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2013-08-14 23:32:00 UTC (rev 59146)
@@ -225,6 +225,7 @@
actact->end,
actact->act,
actact->type, // + 1, because Blender starts to count at zero,
+ actact->blend_mode,
actact->blendin,
actact->priority,
actact->layer,
More information about the Bf-blender-cvs
mailing list