libmoldeo (Moldeo 1.0 Core)  1.0
libmoldeo is the group of objects and functions that executes the basic operations of Moldeo 1.0 Platform.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
moEffectManager.cpp
Go to the documentation of this file.
1 /*******************************************************************************
2 
3  moEffectManager.cpp
4 
5  ****************************************************************************
6  * *
7  * This source is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * (at your option) any later version. *
11  * *
12  * This code is distributed in the hope that it will be useful, but *
13  * WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
15  * General Public License for more details. *
16  * *
17  * A copy of the GNU General Public License is available on the World *
18  * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
19  * obtain it by writing to the Free Software Foundation, *
20  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21  * *
22  ****************************************************************************
23 
24  Copyright(C) 2006 Fabricio Costa
25 
26  Authors:
27  Fabricio Costa
28 
29 
30 *******************************************************************************/
31 
32 #include "moEffectManager.h"
33 #include "moSceneEffect.h"
34 #include "moSequenceEffect.h"
35 
36 //===========================================
37 //
38 // moEffectManager
39 //
40 //===========================================
41 
43 }
44 
46  Finish();
47 }
48 
49 moEffect*
51 
52  return NewEffect( p_MobDefinition.GetName(),
53  p_MobDefinition.GetConfigName(),
54  p_MobDefinition.GetLabelName(),
55  p_MobDefinition.GetKeyName(),
56  p_MobDefinition.GetType(),
57  p_MobDefinition.GetMobIndex().GetParamIndex(),
58  p_MobDefinition.GetMobIndex().GetValueIndex(),
59  p_MobDefinition.GetActivate()
60  );
61 }
62 
63 moEffect*
64 moEffectManager::NewEffect( const moText& p_resname, const moText& p_configname, const moText& p_labelname, const moText& p_keyname, moMoldeoObjectType p_type, MOint p_paramindex, MOint p_valueindex, bool p_activate ) {
65 
66  moEffect* peffect = NULL;
67 
68  switch( p_type ) {
69  case MO_OBJECT_EFFECT:
70  if ( p_resname==moText("scene") ) {
71  peffect = new moSceneEffect();
72  } else {
73  peffect = moNewEffect( p_resname, m_Plugins);
74  }
75  p_valueindex = m_Effects.Count();
76  m_Effects.Add( peffect );
77 
78  break;
79 
81  peffect = moNewPreEffect( p_resname, m_PrePlugins );
82  p_valueindex = m_PreEffects.Count();
83  m_PreEffects.Add( (moPreEffect*)peffect );
84  break;
85 
87  peffect = moNewPostEffect( p_resname, m_PostPlugins );
88  p_valueindex = m_PostEffects.Count();
89  m_PostEffects.Add( (moPostEffect*)peffect );
90  break;
91 
93  peffect = moNewMasterEffect( p_resname, m_MasterPlugins );
94  p_valueindex = m_MasterEffects.Count();
95  m_MasterEffects.Add( (moMasterEffect*)peffect );
96  break;
97  default:
98  break;
99  }
100 
101  if (peffect) {
102  moMobDefinition MDef = peffect->GetMobDefinition();
103  MDef.SetConfigName( p_configname );
104  MDef.SetLabelName( p_labelname );
105  MDef.SetKeyName( p_keyname );
106 
107  MDef.SetConsoleParamIndex(p_paramindex);
108  MDef.SetConsoleValueIndex(p_valueindex);
109  MDef.SetActivate(p_activate);
110 
111  peffect->SetMobDefinition( MDef );
112  //m_pMoldeoObjects->Add( (moMoldeoObject*) peffect );
114 
115  if ( peffect->GetName()==moText("scene") || peffect->GetName()==moText("sequence") ) {
116  moMasterEffect* pmastereffect = (moMasterEffect*)peffect;
117  pmastereffect->Set( m_pEffectManager, NULL);
118  }
119 
120  m_AllEffects.Add((moEffect*) peffect);
121  }
122 
123  return (peffect);
124 }
125 
126 MOboolean
128 
129  if (m_pEffect)
130  switch( m_pEffect->GetType() ) {
131  case MO_OBJECT_EFFECT:
132  m_Effects.Add( m_pEffect );
133  m_AllEffects.Add( m_pEffect );
134  return true;
135  break;
136  case MO_OBJECT_PREEFFECT:
137  m_PreEffects.Add( (moPreEffect*)m_pEffect );
138  m_AllEffects.Add( m_pEffect );
139  return true;
140  break;
142  m_PostEffects.Add( (moPostEffect*)m_pEffect );
143  m_AllEffects.Add( m_pEffect );
144  return true;
145  break;
147  m_MasterEffects.Add( (moMasterEffect*)m_pEffect );
148  m_AllEffects.Add( m_pEffect );
149  return true;
150  break;
151  default:
152  break;
153  }
154 
155  return false;
156 }
157 
158 MOboolean
160 
161  MOint all_ID;
162  MOuint i;
163 
164  moEffect* peffect = NULL;
165  moPreEffect* ppreeffect = NULL;
166  moPostEffect* pposteffect = NULL;
167  moMasterEffect* pmastereffect = NULL;
168 
169  switch( p_type ) {
170  case MO_OBJECT_EFFECT:
171  peffect = m_Effects.GetRef(p_ID);
172  if (peffect) {
173  all_ID = GetEffectId( peffect->GetLabelName() );
174  moDeleteEffect( peffect, m_Plugins );
175  m_Effects.Remove(p_ID);
176  for(i=0;i<m_Effects.Count();i++) {
177  if (m_Effects[i]!=NULL) {
178  m_Effects[i]->SetConsoleValueIndex(i);
179  }
180  }
181  }
182  break;
183  case MO_OBJECT_PREEFFECT:
184  ppreeffect = m_PreEffects.GetRef(p_ID);
185  if (ppreeffect) {
186  all_ID = GetEffectId( ppreeffect->GetLabelName() );
187  moDeletePreEffect( ppreeffect, m_PrePlugins );
188  m_PreEffects.Remove(p_ID);
189  for(i=0;i<m_PreEffects.Count();i++) {
190  if (m_PreEffects[i]) {
191  m_PreEffects[i]->SetConsoleValueIndex(i);
192  }
193  }
194  }
195  break;
197  pposteffect = m_PostEffects.GetRef(p_ID);
198  if (pposteffect) {
199  all_ID = GetEffectId( pposteffect->GetLabelName() );
200  moDeletePostEffect( pposteffect, m_PostPlugins );
201  m_PostEffects.Remove(p_ID);
202  for(i=0;i<m_PostEffects.Count();i++) {
203  if (m_PostEffects[i]) {
204  m_PostEffects[i]->SetConsoleValueIndex(i);
205  }
206  }
207  }
208  break;
210  pmastereffect = m_MasterEffects.GetRef(p_ID);
211  if (pmastereffect) {
212  all_ID = GetEffectId( pmastereffect->GetLabelName() );
213  moDeleteMasterEffect( pmastereffect, m_MasterPlugins );
214  m_MasterEffects.Remove(p_ID);
215  for(i=0;i<m_MasterEffects.Count();i++)
216  if (m_MasterEffects[i]) {
217  m_MasterEffects[i]->SetConsoleValueIndex(i);
218  }
219  }
220  break;
221  default:
222  break;
223  }
224 
225  m_AllEffects.Remove(all_ID);
226 
227  return true;
228 }
229 
230 MOint
231 moEffectManager::GetEffectId( const moText& p_labelname ) {
232 
233  for(MOuint i=0;i<m_AllEffects.Count();i++) {
234  if ( m_AllEffects.Get(i) != NULL ) {
235  if ( m_AllEffects.GetRef(i)->GetLabelName() == p_labelname) {
236  return i;
237  }
238  }
239  }
240  return -1;//not found
241 }
242 
243 moText
245 
246  if ( m_AllEffects.Get(p_ID) != NULL ) {
247  return m_AllEffects.Get(p_ID)->GetLabelName();
248  }
249 
250  return moText("");//not found
251 
252 }
253 
254 moEffect*
255 moEffectManager::GetEffectByLabel( const moText& p_label_name, moMoldeoObjectType p_mob_type ) {
256 
257  moEffect* peffect = NULL;
258  moText label_name;
259 
260  for(unsigned int a=0; a<m_AllEffects.Count(); a++ ) {
261 
262  peffect = m_AllEffects.GetRef( a );
263  if (peffect) {
264  label_name = peffect->GetLabelName();
265 
266  if ( ( label_name==p_label_name ) &&
267  ( p_mob_type==peffect->GetType() ) ) {
268  return peffect;
269  } else if (MO_OBJECT_UNDEFINED==p_mob_type &&
270  ( label_name==p_label_name ) ) {
271  return peffect;
272  }
273  } else {
274  MODebug2->Error("moEffectManager::GetEffectByLabel >> Effect is null.");
275  }
276 
277  }
278 
279  return NULL;
280 
281 }
282 
283 bool
284 moEffectManager::Set( int fx_index, moMoldeoObject* p_pMOB ) {
285  if (p_pMOB==NULL)
286  return false;
287 
288  switch(p_pMOB->GetType()) {
289 
290  case MO_OBJECT_EFFECT:
291  m_Effects.Set( fx_index, (moEffect*) p_pMOB);
292  break;
293  case MO_OBJECT_PREEFFECT:
294  m_PreEffects.Set( fx_index, (moPreEffect*) p_pMOB);
295  break;
297  m_PostEffects.Set( fx_index, (moPostEffect*) p_pMOB);
298  break;
300  m_MasterEffects.Set( fx_index, (moMasterEffect*) p_pMOB);
301  break;
302  default:
303  return false;
304  break;
305 
306  }
307 
308  //p_pMOB->GetMobDefinition().GetMobIndex().SetValueIndex();
309  return true;
310 
311 }
312 
313 
314 
315 MOboolean
317 
318  m_PreEffects.Init( 0, NULL);
319  m_Effects.Init( 0, NULL);
320  m_PostEffects.Init( 0, NULL);
321  m_MasterEffects.Init( 0, NULL);
322  m_AllEffects.Init( 0, NULL);
323 
324  m_PrePlugins.Init( 0, NULL);
325  m_Plugins.Init( 0, NULL);
326  m_PostPlugins.Init( 0, NULL);
327  m_MasterPlugins.Init( 0, NULL);
328 
329  return false;
330 }
331 
332 MOboolean
334 
335  m_PreEffects.Finish();
336  m_Effects.Finish();
337  m_PostEffects.Finish();
338  m_MasterEffects.Finish();
339  m_AllEffects.Finish();
340 
341  m_PrePlugins.Finish();
342  m_Plugins.Finish();
343  m_PostPlugins.Finish();
344  m_MasterPlugins.Finish();
345 
346  return true;
347 }
348 
349 moEffectsArray&
351  return m_AllEffects;
352 }
353 
354 moPreEffectsArray&
356  return m_PreEffects;
357 }
358 
359 moEffectsArray&
361  return m_Effects;
362 }
363 
364 moPostEffectsArray&
366  return m_PostEffects;
367 }
368 
369 moMasterEffectsArray&
371  return m_MasterEffects;
372 }
373 
MOint GetParamIndex() const
moMoldeoObjectType
Tipos de objetos en Moldeo.
Definition: moTypes.h:525
moEffect * New(moMobDefinition &p_MobDefinition)
Genera un nuevo efecto a partir de la definición
const moText & GetLabelName() const
moEffectManager * m_pEffectManager
void Error(moText p_text)
Anuncia y registra un error.
Definition: moAbstract.cpp:79
MOboolean AddEffect(moEffect *m_pEffect)
moEffectsArray & Effects()
LIBMOLDEO_API bool moDeleteEffect(moEffect *effect, moPluginsArray &plugins)
Definition: moPlugin.cpp:195
LIBMOLDEO_API moMasterEffect * moNewMasterEffect(moText effect_name, moMasterPluginsArray &plugins)
#define MOboolean
Definition: moTypes.h:385
virtual void Set(moEffectManager *pEffectManager, moConsoleState *cstate)
moEffectsArray & AllEffects()
moMasterEffectsArray & MasterEffects()
const moText & GetName() const
Nombre del objeto.
void SetLabelName(const moText &p_labelname)
Fija la etiqueta de este objeto.
const moText & GetName() const
LIBMOLDEO_API moEffect * moNewEffect(moText effect_name, moPluginsArray &plugins)
Definition: moPlugin.cpp:146
virtual MOboolean Finish()
Finaliza el objeto, libera recursos.
moText GetEffectLabelName(MOint p_ID)
Objeto indefinido.
Definition: moTypes.h:527
Definition: moPostEffect.h:53
LIBMOLDEO_API bool moDeletePostEffect(moPostEffect *posteffect, moPostPluginsArray &plugins)
LIBMOLDEO_API bool moDeleteMasterEffect(moMasterEffect *mastereffect, moMasterPluginsArray &plugins)
clase base para definir Pre-Efectos.
Definition: moPreEffect.h:59
virtual ~moEffectManager()
bool Set(int fx_index, moMoldeoObject *p_pMOB)
const moMobIndex & GetMobIndex() const
Devuelve la dupla de índices para el archivo de configuración
MOint GetEffectId(const moText &p_labelname)
LIBMOLDEO_API moPreEffect * moNewPreEffect(moText effect_name, moPrePluginsArray &plugins)
clase de para manejar textos
Definition: moText.h:75
void SetConsoleValueIndex(MOint p_valueindex)
Clase Base Descriptiva de un Objeto Moldeo.
virtual MOboolean Init()
Inicializa el objeto.
void SetConfigName(const moText &p_configname)
Fijar el nombre del archivo de configuración
moMoldeoObjectType GetType() const
Nombre del archivo de configuración
moText0 moText
Definition: moText.h:291
const moMobDefinition & GetMobDefinition() const
moPostEffectsArray & PostEffects()
#define MOint
Definition: moTypes.h:388
Clase Base para Objetos Moldeo ( moEffect, moIODevice, moResource, moConsole )
Objeto dibujable, pre-efecto ( primeros efectos en el orden de dibujado )
Definition: moTypes.h:529
moResourceManager * m_pResourceManager
void SetKeyName(const moText &p_keyname)
Fija la etiqueta del padre de este objeto.
Objeto dibujable, efecto ( efectos en el orden de dibujado )
Definition: moTypes.h:528
moEffect * NewEffect(const moText &p_resname, const moText &p_configname, const moText &p_labelname, const moText &p_keyname, moMoldeoObjectType p_type, MOint p_paramindex, MOint p_valueindex, bool p_activate=true)
Genera un nuevo efecto a partir de los parámetros correspondientes.
static moDebug * MODebug2
Clase de impresión de errores para depuración
Definition: moAbstract.h:225
LIBMOLDEO_API moPostEffect * moNewPostEffect(moText effect_name, moPostPluginsArray &plugins)
void SetConsoleParamIndex(MOint p_paramindex)
moMoldeoObjectType GetType() const
const moText & GetLabelName() const
Devuelve la etiqueta de este objeto.
moPreEffectsArray & PreEffects()
MOint GetValueIndex() const
#define MOuint
Definition: moTypes.h:387
void SetMobDefinition(const moMobDefinition &p_MobDef)
const moText & GetKeyName() const
Devuelve la etiqueta del padre de este objeto.
clase base para objetos dibujables
Definition: moEffect.h:82
const moText & GetConfigName() const
Nombre del archivo de configuración
Objeto dibujable, post-efecto ( últímos efectos en el orden de dibujado )
Definition: moTypes.h:530
void SetActivate(bool p_activate)
Fija el modo de activación al inicio del proyecto.
MOboolean RemoveEffect(MOint p_ID, moMoldeoObjectType p_type)
LIBMOLDEO_API bool moDeletePreEffect(moPreEffect *preeffect, moPrePluginsArray &plugins)
bool GetActivate() const
Devuelve el modo de activación al inicio del proyecto.
moEffect * GetEffectByLabel(const moText &p_label_name, moMoldeoObjectType p_mob_type=MO_OBJECT_UNDEFINED)
void SetResourceManager(moResourceManager *p_pResourceManager)