diff options
author | Hamed Zaghaghi <hamed.zaghaghi@gmail.com> | 2007-10-23 00:24:26 +0400 |
---|---|---|
committer | Hamed Zaghaghi <hamed.zaghaghi@gmail.com> | 2007-10-23 00:24:26 +0400 |
commit | 21eb3e11e0d4d42d23de6c27a5cdf83d36ac0774 (patch) | |
tree | df6641f49358a6f2cb401b095a185a7e149edcc5 /source/gameengine/GameLogic | |
parent | e979e6ee4d509665a3746959cbff95f47b0463db (diff) |
2d-Filters feature and actuators.
Diffstat (limited to 'source/gameengine/GameLogic')
-rw-r--r-- | source/gameengine/GameLogic/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_2DFilterActuator.cpp | 115 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_2DFilterActuator.h | 43 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SConscript | 1 |
4 files changed, 160 insertions, 0 deletions
diff --git a/source/gameengine/GameLogic/CMakeLists.txt b/source/gameengine/GameLogic/CMakeLists.txt index 127edfc151d..4f40fa22b9e 100644 --- a/source/gameengine/GameLogic/CMakeLists.txt +++ b/source/gameengine/GameLogic/CMakeLists.txt @@ -35,6 +35,7 @@ SET(INC ../../../intern/string ../../../source/gameengine/Expressions ../../../intern/moto/include + ../../../source/gameengine/Rasterizer ${PYTHON_INC} ${SDL_INC} ) diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp new file mode 100644 index 00000000000..7033ae30ac5 --- /dev/null +++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp @@ -0,0 +1,115 @@ +#include "SCA_IActuator.h" + +#include "SCA_2DFilterActuator.h" + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#include <iostream> + + + +SCA_2DFilterActuator::SCA_2DFilterActuator( + SCA_IObject *gameobj, + RAS_2DFilterManager::RAS_2DFILTER_MODE type, + short flag, + float float_arg, + int int_arg, + RAS_IRasterizer* rasterizer, + RAS_IRenderTools* rendertools, + PyTypeObject* T) + : SCA_IActuator(gameobj, T), + m_type(type), + m_flag(flag), + m_int_arg(int_arg), + m_float_arg(float_arg), + m_rasterizer(rasterizer), + m_rendertools(rendertools) +{ +} + + +SCA_2DFilterActuator::~SCA_2DFilterActuator() +{ + +} + + +CValue* SCA_2DFilterActuator::GetReplica() +{ + SCA_2DFilterActuator* replica = new SCA_2DFilterActuator(*this); + replica->ProcessReplica(); + CValue::AddDataToReplica(replica); + + return replica; +} + + +bool SCA_2DFilterActuator::Update() +{ + bool result = false; + + bool bNegativeEvent = IsNegativeEvent(); + RemoveAllEvents(); + + + if (bNegativeEvent) + return false; // do nothing on negative events + + if( m_type == RAS_2DFilterManager::RAS_2DFILTER_MOTIONBLUR ) + { + if(!m_flag) + { + m_rasterizer->EnableMotionBlur(m_float_arg); + } + else + { + m_rasterizer->DisableMotionBlur(); + } + } + else if(m_type < RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS) + { + m_rendertools->Update2DFilter(m_type, m_int_arg); + } + return true; +} + + +PyTypeObject SCA_2DFilterActuator::Type = { + PyObject_HEAD_INIT(&PyType_Type) + 0, + "SCA_2DFilterActuator", + sizeof(SCA_2DFilterActuator), + 0, + PyDestructor, + 0, + __getattr, + __setattr, + 0, + __repr, + 0, + 0, + 0, + 0, + 0 +}; + + +PyParentObject SCA_2DFilterActuator::Parents[] = { + &SCA_2DFilterActuator::Type, + &SCA_IActuator::Type, + &SCA_ILogicBrick::Type, + &CValue::Type, + NULL +}; + + +PyMethodDef SCA_2DFilterActuator::Methods[] = { + /* add python functions to deal with m_msg... */ + {NULL,NULL} +}; + + +PyObject* SCA_2DFilterActuator::_getattr(const STR_String& attr) { + _getattr_up(SCA_IActuator); +} diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.h b/source/gameengine/GameLogic/SCA_2DFilterActuator.h new file mode 100644 index 00000000000..f1871c8f093 --- /dev/null +++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.h @@ -0,0 +1,43 @@ +#ifndef __SCA_2DFILETRACTUATOR_H__ +#define __SCA_2DFILETRACTUATOR_H__ + +#include "RAS_IRasterizer.h" +#include "RAS_IRenderTools.h" +#include "SCA_IActuator.h" + + +class SCA_2DFilterActuator : public SCA_IActuator +{ + Py_Header; + +private: + + RAS_2DFilterManager::RAS_2DFILTER_MODE m_type; + short m_flag; + float m_float_arg; + int m_int_arg; + RAS_IRasterizer* m_rasterizer; + RAS_IRenderTools* m_rendertools; + +public: + + SCA_2DFilterActuator( + class SCA_IObject* gameobj, + RAS_2DFilterManager::RAS_2DFILTER_MODE type, + short flag, + float float_arg, + int int_arg, + RAS_IRasterizer* rasterizer, + RAS_IRenderTools* rendertools, + PyTypeObject* T=&Type + ); + + + virtual ~SCA_2DFilterActuator(); + virtual bool Update(); + + virtual CValue* GetReplica(); + virtual PyObject* _getattr(const STR_String& attr); + +}; +#endif diff --git a/source/gameengine/GameLogic/SConscript b/source/gameengine/GameLogic/SConscript index 7a2c3d91e72..1ca884f6dec 100644 --- a/source/gameengine/GameLogic/SConscript +++ b/source/gameengine/GameLogic/SConscript @@ -5,6 +5,7 @@ sources = env.Glob('*.cpp') + env.Glob('Joystick/*.cpp') incs = '. #/source/kernel/gen_system #/intern/string' incs += ' #/source/gameengine/Expressions #/intern/moto/include' +incs += ' #/source/gameengine/Rasterizer' incs += ' ' + env['BF_PYTHON_INC'] incs += ' ' + env['BF_SDL_INC'] |