libmoldeo (Moldeo 1.0 Core)  1.0
libmoldeo es el conjunto de objetos y funciones, que permiten ejecutar las operaciones básicas de la plataforma Moldeo, y que compone su núcleo.
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Amigas 'defines' Grupos Páginas
moEffectManager.cpp
Ir a la documentación de este archivo.
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
moTypes MOint p_paramindex
Definition: all_f.js:18
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()
function a
Definition: jquery.js:41
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.
moTypes MOint moText moParamIndex moParamReference int iRow int int i int i
Definition: all_f.js:18
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)