diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2013-08-15 03:32:00 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2013-08-15 03:32:00 +0400 |
commit | 196d30e0046088820e240642e318e051e2e69fbc (patch) | |
tree | 698f2542102463723ac4d8958b9b7b23fdfea46d /source/gameengine/Converter | |
parent | 9afae77fedb8a84f4d305ebce81b0cc509a2183b (diff) |
BGE: The Action Actuator can now make use of additive blending.
Diffstat (limited to 'source/gameengine/Converter')
-rw-r--r-- | source/gameengine/Converter/BL_ActionActuator.cpp | 7 | ||||
-rw-r--r-- | source/gameengine/Converter/BL_ActionActuator.h | 2 | ||||
-rw-r--r-- | source/gameengine/Converter/KX_ConvertActuators.cpp | 1 |
3 files changed, 8 insertions, 2 deletions
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp index 90383021c90..a28906254a1 100644 --- a/source/gameengine/Converter/BL_ActionActuator.cpp +++ b/source/gameengine/Converter/BL_ActionActuator.cpp @@ -66,6 +66,7 @@ BL_ActionActuator::BL_ActionActuator(SCA_IObject *gameobj, float endtime, struct bAction *action, short playtype, + short blend_mode, short blendin, short priority, short layer, @@ -88,6 +89,7 @@ BL_ActionActuator::BL_ActionActuator(SCA_IObject *gameobj, 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 BL_ActionActuator::Update(double curtime, bool frame) 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 @@ bool BL_ActionActuator::Update(double curtime, bool frame) 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 @@ bool BL_ActionActuator::Update(double curtime, bool frame) // 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; diff --git a/source/gameengine/Converter/BL_ActionActuator.h b/source/gameengine/Converter/BL_ActionActuator.h index ce805c774ef..4579a21f554 100644 --- a/source/gameengine/Converter/BL_ActionActuator.h +++ b/source/gameengine/Converter/BL_ActionActuator.h @@ -48,6 +48,7 @@ public: float endtime, struct bAction *action, short playtype, + short blend_mode, short blendin, short priority, short layer, @@ -129,6 +130,7 @@ protected: float m_stridelength; float m_layer_weight; short m_playtype; + short m_blendmode; short m_priority; short m_layer; short m_ipo_flags; diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp index 5b528972e00..27989983326 100644 --- a/source/gameengine/Converter/KX_ConvertActuators.cpp +++ b/source/gameengine/Converter/KX_ConvertActuators.cpp @@ -225,6 +225,7 @@ void BL_ConvertActuators(const char* maggiename, actact->end, actact->act, actact->type, // + 1, because Blender starts to count at zero, + actact->blend_mode, actact->blendin, actact->priority, actact->layer, |