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.
moConfig.cpp
Ir a la documentación de este archivo.
1 /*******************************************************************************
2 
3  moConfig.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 #include "moTypes.h"
32 #include <tinyxml.h>
33 
34 #include "moConfig.h"
35 
36 #include "moFileManager.h"
37 #include "moFontManager.h"
38 #include "moTextureManager.h"
39 #include "mo3dModelManager.h"
40 #include "moSoundManager.h"
41 #include "moDebugManager.h"
42 
54 moDataMessages* moConfig::m_pMessages = new moDataMessages();
57 
58 //================================================================
59 // moConfigDefinition
60 //================================================================
61 
63 
64 }
65 
67 }
68 
71  (*this) = p_src;
72 }
73 
77 
78  (moAbstract)(*this) = (moAbstract) p_src;
81  m_ObjectName = p_src.m_ObjectName;
83  m_FullJSON = p_src.m_FullJSON;
84 
85  return (*this);
86 }
87 
88 bool
90  for( MOuint i = 0; i < m_ParamDefinitions.Count(); i++ ) {
92  if ( pdef.GetName() == p_name )
93  return true;
94  }
95  return false;
96 }
97 
98 const moParamDefinition&
100 
101  MOuint i = 0;
102 
103  for( i = 0; i < m_ParamDefinitions.Count(); i++ ) {
105  if ( pdef.GetName() == p_param_name )
106  return m_ParamDefinitions[i];
107  }
108 
109  return m_ParamDefinitions.Get(-1);
110 }
111 
112 
113 bool
115 
116  bool founded;
117  moParamDefinition pdef;
118 
119  founded = false;
120 
121  for( MOuint i = 0; i < m_ParamDefinitions.Count(); i++ ) {
122  pdef = m_ParamDefinitions[i];
123  if ( pdef.GetName() == p_name ) {
124  founded = true;
125  break;
126  }
127  }
128 
129  if (founded) {
130  pdef.SetIndex( p_index );
131  m_ParamIndexes.Add( p_index );
132  }
133 
134  return founded;
135 }
136 
137 
138 void
139 moConfigDefinition::Add( const moText& p_name, moParamType p_type, int p_index, const moValue& p_defaultvalue, const moText& p_OptionsStr ) {
140 
141  if ( Exists(p_name) ) {
142  MODebug2->Error( p_name + " already defined in " + m_ObjectName );
143  return;
144  }
145 
146  moParamDefinition pdef( p_name, p_type );
147 
148  pdef.SetIndex( p_index );
149 
150  if (p_type!=MO_PARAM_MOLDEO_OBJECT)
151  pdef.SetDefault( p_defaultvalue );
152 
153  pdef.SetOptions(p_OptionsStr);
154 
155  //IF TYPE IS COLOR > sub 0: RED, 1: GREEN, 2: BLUE, 3: ALPHA
156  if (p_type==MO_PARAM_COLOR) {
159  vd.SetCodeName( "RED" );
160  pdef.GetDefaultValue().GetSubValue((int)MO_RED).SetValueDefinition(vd);
161 
163  vd.SetCodeName( "GREEN" );
164  pdef.GetDefaultValue().GetSubValue((int)MO_GREEN).SetValueDefinition(vd);
165 
167  vd.SetCodeName( "BLUE" );
168  pdef.GetDefaultValue().GetSubValue((int)MO_BLUE).SetValueDefinition(vd);
169 
171  vd.SetCodeName( "ALPHA" );
172  pdef.GetDefaultValue().GetSubValue((int)MO_ALPHA).SetValueDefinition(vd);
173 
174  /*
175  p_defaultvalue.GetSubValue(MO_GREEN).GetValueDefinition().SetCodeName( "GREEN" );
176  p_defaultvalue.GetSubValue(MO_BLUE).GetValueDefinition().SetCodeName( "BLUE" );
177  p_defaultvalue.GetSubValue(MO_ALPHA).GetValueDefinition().SetCodeName( "ALPHA" );
178  */
179  }
180 
181  if (p_type==MO_PARAM_FONT) {
182  //p_defaultvalue.GetSubValue(0).GetValueDefinition().SetCodeName( "RED" );
183  }
184 
185  m_ParamDefinitions.Add( pdef );
186 
187  m_ParamIndexes.Add( p_index );
188 }
189 
190 /*
191 void
192 moConfigDefinition::Add( moText p_name, moParamType p_type , MOint p_index) {
193 
194  if ( Exists(p_name) ) {
195  MODebug2->Error( p_name + " already defined in " + m_ObjectName );
196  return;
197  }
198 
199  moParamDefinition pdef( p_name, p_type );
200 
201  pdef.SetIndex( p_index );
202 
203  m_ParamDefinitions.Add( pdef );
204 
205  ATENCION!!!! si p_index no coincide con el indice real de la entrada d el array de m_ParamIndexes....
206  entonces no funcionar�.... hay que evitar este problema....
207  sobre todo y tambien si no se llama en el orden correcto.
208 
209  soluciones:
210 
211  Espera que las sucesivas llamadas se hagan correctamente.
212  Si el siguiente indice no coincide...
213 
214 
215 
216 
217  m_ParamIndexes.Add( p_index );
218 
219 }
220 */
221 
222 bool
223 moConfigDefinition::SetParamIndex( int defined_array_index, moParamIndex paramindex ) {
224 
225  if (defined_array_index==-1) {
226  MODebug2->Error("moConfigDefinition::SetParamIndex in [" + m_ObjectName + "] > defined array entry index is -1 (undefined).");
227  return false;
228  }
229 
230  if ( ! ( 0 <= defined_array_index && defined_array_index < (int)m_ParamIndexes.Count()) ) {
231  /*MODebug2->Message( moText("WARNING!! moConfigDefinition::SetParamIndex[" + m_ObjectName + "] > defined array entry index not in range : ")
232  + IntToStr(defined_array_index)
233  + moText(" Max Indexes : ")
234  + IntToStr(m_ParamIndexes.Count()) );*/
235  MODebug2->Warning( moText("Extra parameters must be defined at the end of config file. \"") + m_ObjectName + moText("\""));
236  MODebug2->Message( this->ToJSON() );
237  return false;
238  }
239 
240  if (paramindex.index==MO_PARAM_NOT_FOUND) {
241  MODebug2->Error( moText("moConfigDefinition::SetParamIndex[" + m_ObjectName + "] > moParamIndex undefined : ")
242  + IntToStr(paramindex.index) );
243  return false;
244  }
245 
246  m_ParamIndexes.Set( defined_array_index , paramindex );
247  return true;
248 
249 }
250 
251 const moText&
253 
254  moText fieldSeparation = ",";
255 
256  m_FullJSON = "{";
257  m_FullJSON+= "'objectname': '" + this->m_ObjectName + "'";
258  m_FullJSON+= fieldSeparation + "'objectclass': '" + this->m_ObjectClass + "'";
259  m_FullJSON+= "}";
260 
261  return m_FullJSON;
262 }
263 
264 //================================================================
265 // moConfig ( XML Config )
266 //================================================================
267 
268 
270  m_CurrentParam = -1;
271  m_ConfigLoaded = false;
272  m_PreconfActual = -1;
273 }
274 
276 
277 }
278 
280 
281  return m_ConfigLoaded;
282 
283 }
284 
285 void
287 
288  if ( GetConfigDefinition()!=NULL) {
289 
290  for( MOuint i = 0; i < GetConfigDefinition()->GetParamDefinitions()->Count(); i++ ) {
291 
292  moParamDefinition pdef = GetConfigDefinition()->GetParamDefinitions()->Get(i);
293 
294  int pidx = (MOint)GetParamIndex( pdef.GetName() );
295  if (pidx>-1) {
296  if (!GetConfigDefinition()->SetParamIndex( (int)pdef.GetIndex(), moParamIndex(pidx))) {
297  moDebugManager::Message( "moConfig::Indexation > <mo"+GetObjectClass()+"::"+GetObjectName()+"> Parameter \"" + moText(pdef.GetName()) + moText("\" warning. Bad indexation could cause errors."));
298  }
299  } else moDebugManager::Error( "moConfig::Indexation > <mo"+GetObjectClass()+"::"+GetObjectName()+"> > Parameter \"" + moText(pdef.GetName()) + moText("\" not found."));
300  }
301  }
302 }
303 
304 void
306 
309  for( MOuint j=0; j< m_ConfigDefinition.GetParamDefinitions()->Count(); j++ ) {
310  moParamDefinitions* pd = m_ConfigDefinition.GetParamDefinitions();
311  if (pd) {
312 
313  moParamDefinition pDef = pd->Get(j);
314 
315  moText paramDefName = pDef.GetName();
316  moParamType paramDefType = pDef.GetType();
317 
318  int real_idx = GetParamIndex( paramDefName );
319 
320  if (real_idx==-1) {
321 
322  CreateParam( pDef );
323 
324  } else {
325 
327  moParam& pParamLoaded( GetParam(real_idx) );
328 
329  if ( pParamLoaded.GetParamDefinition().GetType() != paramDefType ) {
331  pParamLoaded.FixType( paramDefType );
332 
333  }
335  if (pDef.GetOptions().Count()!=pParamLoaded.GetParamDefinition().GetOptions().Count()) {
336  pParamLoaded.FixOptions( pDef.GetOptions() );
337  }
338  }
339  }
340  }
341 
342 
344  for( MOuint i=0; i< m_Params.Count(); i++ ) {
345 
346  moParam& param(m_Params[i]);
347 
348  for( MOuint j=0; j< m_ConfigDefinition.GetParamDefinitions()->Count(); j++ ) {
349 
350  moParamDefinitions* pd = m_ConfigDefinition.GetParamDefinitions();
351  moParamDefinition pDef = pd->Get(j);
352 
353 
354  if (pd) {
355  if ( param.GetParamDefinition().GetName() == pDef.GetName() ) {
356  pDef.SetIndex(i);
357  pd->Set( j, pDef );
358  break;
359  }
360  }
361  }
362  param.GetParamDefinition().SetIndex(i);
363  }
364 
366  //for( MOuint i=0; i< m_Params.Count(); i++ ) {
367 
368  //moParam& param(m_Params[i]);
369 
370  for( MOuint j=0; j< m_ConfigDefinition.GetParamDefinitions()->Count(); j++ ) {
371 
372  moParamDefinitions* pd = m_ConfigDefinition.GetParamDefinitions();
373  moParamDefinition pDef = pd->Get(j);
374  int pdefindex = pDef.GetIndex();
375 
376  if (pDef.GetName()=="color") {
377  //break here
378  pDef.GetTypeStr();
379  }
380 
381  moParam& param( m_Params[pdefindex] );
382  //moValue defaultValue = param.GetParamDefinition().GetDefaultValue();
383  moValue defaultValue = pDef.GetDefaultValue();
384 
385  for( MOuint k=0; k< param.GetValuesCount(); k++ ) {
386  for( MOuint l=0; l< param.GetValue(k).GetSubValueCount(); l++ ) {
387  moValueBase &vb( param.GetValue(k).GetSubValue(l) );
388  moValueBase &dfvb( defaultValue.GetSubValue(l) );
389  //compare vb.
390  moValueDefinition vd = vb.GetValueDefinition();
391  moValueDefinition dfvd = dfvb.GetValueDefinition();
392  if(vd.GetCodeName()!=dfvd.GetCodeName())
393  vd.SetCodeName( dfvd.GetCodeName() );
394  vb.SetValueDefinition( vd );
395 
396  }
397  }
398  }
399 
400 }
401 
402 int moConfig::LoadConfig( moText p_filename ) {
403 
404  TiXmlDocument m_XMLDocument;
405  TiXmlEncoding xencoding = TIXML_ENCODING_LEGACY;
406 
407  UnloadConfig();
408 
409  //p_filename = p_filename.Replace("\\","//");
410  //p_filename = p_filename.Replace("\\\\","//");
411  p_filename.Replace("\\","/");
412 
413  if (!moFileManager::FileExists(p_filename)) {
414  moDebugManager::Error( "moConfig::LoadConfig > Error " + p_filename + " doesn't exists." );
415  }
416 
417  cout << "XML DOM about to load..." << endl;
418 
419  if (m_XMLDocument.LoadFile( (char *) p_filename, xencoding )) {
420 
421  //parse the xml for params...
422  cout << "XML DOM loaded" << endl;
423 
424  TiXmlHandle docHandle( &m_XMLDocument );
425 
426  TiXmlElement* MOCONFIG = docHandle.FirstChild( "MOCONFIG" ).Element();
427 // FirstChild( "DEFINITION" ).Child( "Child", 1 ).Element();
428  if ( MOCONFIG )
429  {
430  MOCONFIG->QueryIntAttribute( "majorversion", &((int&)m_MajorVersion));
431  MOCONFIG->QueryIntAttribute( "minorversion", &((int&)m_MinorVersion));
432 
433  TiXmlNode* NODEDEFINITION = MOCONFIG->FirstChild( "DEFINITION" );
434  TiXmlElement* DEFINITION = NULL;
435  if (NODEDEFINITION) {
436  DEFINITION = NODEDEFINITION->ToElement();
437  }
438  if (DEFINITION) {
439  moText objectname( (char*)DEFINITION->Attribute( "name" ) );
440  moText objectclass( (char*) DEFINITION->Attribute( "class" ));
441  Set( objectname, objectclass );
442  } else return MO_PARAM_NOT_FOUND;
443 
444  TiXmlNode* NODEUPDATE = MOCONFIG->FirstChild( "UPDATE" );
445  TiXmlElement* UPDATE = NULL;
446  if (NODEUPDATE) {
447  UPDATE = NODEUPDATE->ToElement();
448  if (UPDATE) {
449  moText version = UPDATE->Attribute("");
450  }
451  }
452 
453  TiXmlNode* NODECONFIGPARAMS = MOCONFIG->FirstChild( "CONFIGPARAMS" );
454  TiXmlElement* CONFIGPARAMS = NULL;
455  if (NODECONFIGPARAMS) {
456  CONFIGPARAMS = NODECONFIGPARAMS->ToElement();
457  }
458  if (CONFIGPARAMS) {
459  TiXmlNode* NODEPARAM = CONFIGPARAMS->FirstChild("PARAM");
460  TiXmlElement* PARAM = NULL;
461  if (NODEPARAM) {
462  PARAM = NODEPARAM->ToElement();
463  }
464  while(PARAM) {
465  char* resStr = NULL;
466 
467  moText paramname;
468  resStr = ((char*) PARAM->Attribute( "name"));
469  if (resStr) paramname = resStr;
470 
471  moText paramtype;
472  resStr = ((char*) PARAM->Attribute( "type"));
473  if (resStr) paramtype = resStr;
474 
475  moText paramproperty;
476  resStr = ((char*) PARAM->Attribute( "property"));
477  if (resStr) paramproperty = resStr;
478 
479  moText paramgroup;
480  resStr = ((char*) PARAM->Attribute( "group"));
481  if (resStr) paramgroup = resStr;
482 
483  moText paraminterpolation;
484  resStr = ((char*) PARAM->Attribute( "interpolation"));
485  if (resStr) paraminterpolation = resStr;
486 
487  moText paramduration;
488  resStr = ((char*) PARAM->Attribute( "duration"));
489  if (resStr) paramduration = resStr;
490 
491  moText paramoptions;
492  resStr = ((char*) PARAM->Attribute( "options"));
493  if (resStr) paramoptions = resStr;
494 
495  /*cout << endl << "moConfig::LoadConfig > name: " << paramname << " paraminterpolation: " << paraminterpolation << endl;*/
496  moParamDefinition definition( paramname, paramtype, paramproperty, paramgroup, paraminterpolation, paramduration, paramoptions );
497  moParam xparam( definition );
498 
499  TiXmlElement* VALUE = NULL;
500  TiXmlNode* NODE = PARAM->FirstChild("VAL");
501  if (NODE) {
502  VALUE = NODE->ToElement();
503  }
504  while(VALUE) {
505 
506  TiXmlElement* VALUEDATA = NULL;
507  TiXmlNode* NODEDATA = VALUE->FirstChild("D");
508  if (NODEDATA) VALUEDATA = NODEDATA->ToElement();
509 
510  if (VALUEDATA) {
511  moText valuetype( (char*) VALUEDATA->Attribute("type") );
512  moText valuecodename( (char*) VALUEDATA->Attribute("code") );
513  moText valueattribute( (char*) VALUEDATA->Attribute("attribute") );
514  moText valuemin( (char*) VALUEDATA->Attribute("min") );
515  moText valuemax( (char*) VALUEDATA->Attribute("max") );
516  moText valuedata( (char*) VALUEDATA->GetText() );
517 
518  if (valuetype=="XML") {
519  TiXmlPrinter printer;
520  TiXmlNode* NODEDATAXML = VALUEDATA->FirstChild();
521  if (NODEDATAXML) {
522  NODEDATAXML->Accept( &printer );
523  valuedata = moText( printer.CStr() );
524  }
525  }
526 
527  moValue xvalue( valuedata, valuetype );
528 
529  moValueBase& xvbase( xvalue.GetLastSubValue() );
530 
531  xvbase.SetCodeName( valuecodename );
532  xvbase.SetAttribute( valueattribute );
533  xvbase.SetRange( valuemin, valuemax );
535  // SetSelect ???
536 
537  VALUEDATA = VALUEDATA->NextSiblingElement("D");
538 
539  while( VALUEDATA ) {
540  //.... ;
541  moText subvaluetype( (char*) VALUEDATA->Attribute("type") );
542  moText subvaluecodename( (char*) VALUEDATA->Attribute("code") );
543  moText subvalueattribute( (char*) VALUEDATA->Attribute("attribute") );
544  moText subvaluemin( (char*) VALUEDATA->Attribute("min") );
545  moText subvaluemax( (char*) VALUEDATA->Attribute("max") );
546  moText subvaluedata( (char*) VALUEDATA->GetText() );
547 
548  if (subvaluetype=="XML") {
549  TiXmlPrinter printer;
550  TiXmlNode* NODEDATAXML = VALUEDATA->FirstChild();
551  if (NODEDATAXML) {
552  NODEDATAXML->Accept( &printer );
553  subvaluedata = moText( printer.CStr() );
554  }
555  }
556 
557  xvalue.AddSubValue( subvaluedata, subvaluetype );
558 
559  moValueBase& xxvbase( xvalue.GetLastSubValue() );
560 
561  xxvbase.SetCodeName( subvaluecodename );
562  xxvbase.SetAttribute( subvalueattribute );
563  xxvbase.SetRange( subvaluemin, subvaluemax );
564 
565  VALUEDATA = VALUEDATA->NextSiblingElement("D");
566  }
567 
568  xparam.AddValue( xvalue );
569  }
570  VALUE = VALUE->NextSiblingElement("VAL");
571  }
572 
573  xparam.FirstValue();
574 
575  m_Params.Add( xparam );
576 
577  PARAM = PARAM->NextSiblingElement("PARAM");
578  }
579 
580  }
581 
582  TiXmlNode* PRECONFIGSNODE = MOCONFIG->FirstChild( "PRECONFIGS" );
583  TiXmlElement* PRECONFIGS = NULL;
584  if (PRECONFIGSNODE) {
585  PRECONFIGS = PRECONFIGSNODE->ToElement();
586  }
587  if (PRECONFIGS) {
588 
589  moPreConfig PreConfig;
590 
591  TiXmlNode* PRECONFIGNODE = PRECONFIGS->FirstChild("PRE");
592  TiXmlElement* PRECONFIG = NULL;
593  if (PRECONFIGNODE) {
594  PRECONFIG = PRECONFIGNODE->ToElement();
595  }
596  while(PRECONFIG) {
597 
598  TiXmlElement* PREVALUE = NULL;
599  TiXmlNode* NODE = PRECONFIG->FirstChild("P");
600  //PreConfig.m_ValueIndexes.Empty();
601  PreConfig.m_PreconfIndexes.Empty();
602  PreConfig.m_Name = moText((char*) PRECONFIG->Attribute( "name"));
603 
604  if (NODE) {
605  PREVALUE = NODE->ToElement();
606  }
607  while(PREVALUE) {
608 
609  moPreconfigParamIndex VIndex;
610 
611  moText paramname((char*) PREVALUE->Attribute( "name"));
612  moValue Value( moText((char*) PREVALUE->GetText()) , moText("INT") );
613 
614  VIndex.m_ParamName = paramname;
615  VIndex.m_ParamIndex = GetParamIndex(paramname);
616  VIndex.m_ValueIndex = Value.GetSubValue().Int();
617 
618  PreConfig.m_PreconfIndexes.Add( VIndex );
619  PREVALUE = PREVALUE->NextSiblingElement("P");
620 
621  }
622 
623  m_PreConfigs.Add( PreConfig );
624  PRECONFIG = PRECONFIG->NextSiblingElement("PRE");
625  }
626 
627  }
628 
629  FirstParam();
630  PreConfFirst();
631  m_FileName = p_filename;
632  m_ConfigLoaded = true;
633 
635  FixConfig();
636 
637  return MO_CONFIG_OK;
638 
639 
640  }
641 
642  } else {
643  if (m_XMLDocument.Error()) {
644  moDebugManager::Error( moText("XML ERROR:") + p_filename+moText(" XML error:") + moText(m_XMLDocument.ErrorDesc()) );
645  }
647  }
648  m_ConfigLoaded = false;
649  return -1;
650 }
651 
652 int moConfig::SaveConfig( moText p_filename ) {
653  moText TNodeValue;
654 
655  if (p_filename.Length()==0) {
656  p_filename = this->m_FileName;
657  }
658 
659  cout << "moConfig::SaveConfig > filename is " << p_filename << endl;
660 
661 
662  //chequear si existe el archivo?
663  TiXmlDocument m_XMLDocument( p_filename );
664 
665  TiXmlDeclaration * DECL = new TiXmlDeclaration( "1.0", "ISO-8859-1", "" );
666  m_XMLDocument.LinkEndChild( DECL );
667 
668  TiXmlElement * MOCONFIG = new TiXmlElement( "MOCONFIG" );
669 
670  if ( MOCONFIG )
671  {
672  MOCONFIG->SetAttribute( "majorversion", m_MajorVersion);
673  MOCONFIG->SetAttribute( "minorversion", m_MinorVersion);
674 
675  TiXmlElement* DEFINITION = new TiXmlElement( "DEFINITION" );
676  if (DEFINITION) {
677  DEFINITION->SetAttribute( "name", GetObjectName() );
678  DEFINITION->SetAttribute( "class", GetObjectClass() );
679  }
680  MOCONFIG->LinkEndChild(DEFINITION);
681 
682  TiXmlElement* UPDATE = new TiXmlElement( "UPDATE" );
683  MOCONFIG->LinkEndChild(UPDATE);
684 
685  TiXmlElement* CONFIGPARAMS = new TiXmlElement( "CONFIGPARAMS" );
686  if (CONFIGPARAMS) {
687 
688  for( int p = 0; p< (int)m_Params.Count(); p++ ) {
689 
690  //proximo par�metro
691  moParam& xparam( m_Params[p] );
692  moParamDefinition definition = xparam.GetParamDefinition();
693 
694  TiXmlElement* PARAM = new TiXmlElement( "PARAM" );
695  if (PARAM) {
696 
697  PARAM->SetAttribute( "name" , definition.GetName() );
698  PARAM->SetAttribute( "type" , definition.GetTypeStr() );
699 
700  if (definition.GetProperty().Length()) PARAM->SetAttribute( "property", definition.GetProperty() );
701  if (definition.GetGroup().Length()) PARAM->SetAttribute( "group", definition.GetGroup() );
702  if (definition.GetTypeStr().Length()) PARAM->SetAttribute( "type" , definition.GetTypeStr() );
703  if (definition.GetOptionsStr().Length()) PARAM->SetAttribute( "options" , definition.GetOptionsStr() );
704 
705  if (definition.GetInterpolation().GetFunctionToText()!=moText("none") ) {
706 
707  PARAM->SetAttribute( "interpolation" , definition.GetInterpolation().GetFunctionToText() );
708  PARAM->SetAttribute( "duration" , IntToStr( definition.GetInterpolation().GetDuration() ) );
709 
710  }
711 
712  for( int v = 0; v< (int)xparam.GetValuesCount(); v++ ) {
713 
714  //proximo valor
715  moValue &xvalue( xparam.GetValue(v) );
716 
717  TiXmlElement* VALUE = new TiXmlElement("VAL");
718  if (VALUE) {
719  for( int s = 0; s< (int)xvalue.GetSubValueCount(); s++ ) {
720 
721  //proximo subvalor
722  moValueBase& xvaluedata( xvalue.GetSubValue(s) );
723 
724  TiXmlElement* VALUEDATA = new TiXmlElement("D");
725  if (VALUEDATA) {
726 
727  VALUEDATA->SetAttribute( "type" , xvaluedata.GetTypeStr() );
728 
729  moText valuecodename = xvaluedata.GetValueDefinition().GetCodeName();
730  moText valueattribute = xvaluedata.GetValueDefinition().GetAttribute();
731  MOfloat valuemin, valuemax;
732  xvaluedata.GetRange( &valuemin, &valuemax );
733 
734  if ( valuecodename !=moText("") ) VALUEDATA->SetAttribute( "code" , valuecodename );
735  if ( valueattribute !=moText("") ) VALUEDATA->SetAttribute( "attribute" , valueattribute );
736  if ( valuemin != valuemax ) {
737  VALUEDATA->SetAttribute( "min" , FloatToStr( valuemin ) );
738  VALUEDATA->SetAttribute( "max" , FloatToStr( valuemax ) );
739  }
740  if (xvaluedata.GetTypeStr()=="XML") {
741  TiXmlDocument XMLDoc;
742  TiXmlEncoding xencoding = TIXML_ENCODING_LEGACY;
743  XMLDoc.Parse((const char*) xvaluedata.Text(), 0, xencoding );
744  TiXmlElement* rootKey = XMLDoc.FirstChildElement( "D" );
745  TiXmlNode* XMLC;
746 
747  if (rootKey==NULL) {
748  XMLC = XMLDoc.FirstChild();
749  } else XMLC = rootKey->FirstChild();
750 
752  while(XMLC) {
753  TNodeValue = XMLC->Value();
754  VALUEDATA->InsertEndChild( *XMLC );
755  XMLC = XMLC->NextSibling();
756  }
757  } else {
758  TiXmlText * datatext = new TiXmlText( xvaluedata.ToText() );
759  VALUEDATA->LinkEndChild( datatext );
760  }
761 
762 
763  }
764  VALUE->LinkEndChild( VALUEDATA );
765  }
766  }
767  PARAM->LinkEndChild(VALUE);
768  }
769  }
770  CONFIGPARAMS->LinkEndChild( PARAM );
771  }
772  }
773  MOCONFIG->LinkEndChild( CONFIGPARAMS );
774 
775 
776  TiXmlElement* PRECONFIGS = new TiXmlElement( "PRECONFIGS" );
777  if (PRECONFIGS) {
778 
779  for( int pc=0; pc< (int)m_PreConfigs.Count(); pc++) {
780 
781  moPreConfig& xPreConfig( m_PreConfigs[pc] );
782 
783  TiXmlElement* PRECONFIG = new TiXmlElement("PRE");
784  if (PRECONFIG) {
785 
786  for( int pv=0; pv< (int)xPreConfig.m_PreconfIndexes.Count(); pv++) {
787 
788  moPreconfigParamIndex xPreIndex = xPreConfig[pv];
789 
790  TiXmlElement* PREVALUE = new TiXmlElement("P");
791 
792  if (PREVALUE) {
793 
794 
795  PREVALUE->SetAttribute( "name", GetParam( xPreIndex.m_ParamIndex ).GetParamDefinition().GetName() );
796 
797  TiXmlText * datatext = new TiXmlText( IntToStr(xPreIndex.m_ValueIndex) );
798 
799  if (datatext)
800  PREVALUE->LinkEndChild( datatext );
801 
802  }
803  PRECONFIG->LinkEndChild( PREVALUE );
804  }
805  PRECONFIGS->LinkEndChild( PRECONFIG );
806  }
807  }
808  MOCONFIG->LinkEndChild( PRECONFIGS );
809  }
810  m_XMLDocument.LinkEndChild( MOCONFIG );
811  }
812 
813  cout << "moConfig::SaveConfig > saving file to " << p_filename << endl;
814  if (m_XMLDocument.SaveFile( p_filename )) {
815  cout << "moConfig::SaveConfig > success " << endl;
816  m_FileName = p_filename;
817  return MO_CONFIG_OK;
818  } else {
819  cout << "moConfig::SaveConfig > ERROR " << endl;
820  return -1;
821  }
822 
823 }
824 
825 void
827 
828  moParam xparam( p_ParamDef );
829 
832  if ( p_ParamDef.GetDefaultValue().GetSubValueCount()>0
833  &&
834  p_ParamDef.GetDefaultValue().GetSubValue(0).GetTypeStr()!="UNDEFINED" ) {
835  xparam.AddValue( p_ParamDef.GetDefaultValue() );
836  } else {
837  xparam.SetDefaultValue();
838  }
839  m_Params.Add( xparam );
840 
842  moParam& pParam( m_Params[m_Params.Count()-1] );
843  pParam.GetParamDefinition().SetIndex(m_Params.Count()-1);
844  p_ParamDef.SetIndex(m_Params.Count()-1);
845 }
846 
847 MOboolean
848 moConfig::CreateDefault( const moText &p_fullconfigfilename ) {
849 
850  moFile cFile( p_fullconfigfilename );
851 
852  moText pt;
853  pt = p_fullconfigfilename;
854 
856  if (cFile.Exists()) {
857  cout << "moConfig::CreateDefault > file already exists " << pt << endl;
858  return false;
859  }
860 
861  if (this->IsConfigLoaded()) {
862  cout << "moConfig::CreateDefault > config has information already (is loaded) " << endl;
863  return false;
864  }
865 
866  //crea los par�metros en funci�n de las definiciones, con valores por default...
867  moParamDefinitions* pParamDefinitions = NULL;
868 
869  pParamDefinitions = this->GetConfigDefinition()->GetParamDefinitions();
870 
871  if (pParamDefinitions) {
872 
873  this->UnloadConfig();
874 
875  cout << "moConfig::CreateDefault > Loading default ParamDefinition in moConfig : number of params : " << pParamDefinitions->Count() << endl;
876  for(int i=0; i<(int)pParamDefinitions->Count() ; i++) {
877 
878  moParamDefinition pParamDefinition = pParamDefinitions->Get(i);
879 
880  CreateParam( pParamDefinition );
881  }
882 
883  cout << "moConfig::CreateDefault > Saving Config to disk..." << endl;
884  if (SaveConfig( pt )==MO_CONFIG_OK) {
885  cout << "moConfig::CreateDefault > Saved Config Succesfully " << endl;
886  return true;
887  }
888  cout << "moConfig::CreateDefault > Error Saving Config to disk " << endl;
889 
890  }
891 
892  cout << "moConfig::CreateDefault > Errors occured " << endl;
893  return false;
894 
895 }
896 
897 void
899 
900  m_Params.Empty();
901 
902  m_ConfigLoaded = false;
903 
904 }
905 
907 
908  UnloadConfig();
909 
910 }
911 
912 moText
914 /*
915  moText linebr,tab;
916 
917  tab = "\t";
918  linebr = "\n";
919 
920  if (m_ConfigLoaded) {
921 
922  MOuint p,v,s;
923  moText fulltext,indent;
924 
925  fulltext = "<?xml version=\"1.0\" standalone=no>";
926  fulltext+=linebr;
927  fulltext+= "<!-- Console version 0.7 -->";
928  fulltext+=linebr;
929  fulltext+= "<MOCONFIG majorversion=\"1\" minorversion=\"1\">";
930  fulltext+=linebr;
931  fulltext+= "<DEFINITION name=\"objectname\" class=\"classobject\">descripcion</DEFINITION>";
932  fulltext+=linebr;
933  fulltext+="<UPDATE day=\"--/--/2007\" hour=\"00:00:00\">--/--/---- --:--:--</UPDATE>";
934  fulltext+=linebr;
935  fulltext+= "<CONFIGPARAMS>";
936  fulltext+=linebr;
937  for( p=0; p<(MOuint)GetParamsCount(); p++ ) {
938  fulltext+= tab + "<PARAM name=\""+GetParam(p).GetParamDefinition().GetName()+"\" type=\""+GetParam(p).GetParamDefinition().GetTypeStr()+"\">";
939  fulltext+=linebr;
940  for( v=0; v< GetParam(p).GetValuesCount(); v++) {
941  fulltext+= tab + tab +"<VAL>";
942  for( s=0; s< GetParam(p).GetValue(v).GetSubValueCount(); s++) {
943  fulltext+= "<D type=\""+GetParam(p).GetValue(v).GetSubValue(s).GetTypeStr()+"\">";
944  fulltext+= GetParam(p).GetValue(v).GetSubValue(s).Text();
945  fulltext+= "</D>";
946  }
947  fulltext+= "</VAL>";
948  fulltext+=linebr;
949  }
950  fulltext+= tab + "</PARAM>";
951  fulltext+=linebr;
952  }
953  fulltext+= "</CONFIGPARAMS>";
954  fulltext+=linebr;
955  fulltext+= "<PRECONFIGS>";
956  fulltext+=linebr;
957  for( p=0; p<m_PreConfigs.Count(); p++ ) {
958  fulltext+= tab + "<PRE>";
959  for( v=0; v<m_PreConfigs[p].m_ValueIndexes.Count(); v++ ) {
960  fulltext+= "<P name=\""+GetParam(m_PreConfigs[p].m_ValueIndexes[v].m_ParamIndex).GetParamDefinition().GetName()+"\">";
961  fulltext+= IntToStr(m_PreConfigs[p].m_ValueIndexes[v].m_ParamIndex);
962  fulltext+= "</P>";
963  }
964  fulltext+= "</PRE>";
965  fulltext+=linebr;
966 
967  }
968  fulltext+= "</PRECONFIGS>";
969  fulltext+=linebr;
970  return fulltext;
971  }
972 */
973  return moText("unloaded");
974 }
975 
976 moParams&
978 
979  return m_Params;
980 
981 }
982 
983 moParam&
984 moConfig::GetParam( MOint p_paramindex ) {
985  if ( p_paramindex == -1 )
986  return m_Params[m_CurrentParam];
987  else
988  return m_Params[p_paramindex];
989 }
990 
991 moParam&
992 moConfig::GetParam( moText p_paramname ) {
993 
994  for( MOuint i=0; i< m_Params.Count(); i++ ) {
995  if ( m_Params[i].GetParamDefinition().GetName() == p_paramname ) {
996  return m_Params[i];
997  }
998  }
999  return m_Params[-1];
1000 }
1001 
1002 int
1004  return m_Params.Count();
1005 }
1006 
1007 int
1009 
1010  for( MOuint i=0; i< m_Params.Count(); i++ ) {
1011  if ( m_Params[i].GetParamDefinition().GetName() == p_paramname ) {
1012  return i;
1013  }
1014  }
1015  return (-1);
1016 }
1017 
1018 MOuint
1019 moConfig::GetValuesCount( int p_paramindex ) {
1020  return m_Params.Get( p_paramindex ).GetValuesCount();
1021 }
1022 
1023 moValue&
1024 moConfig::GetValue( moText nameparam, int indexvalue ) {
1025 
1026  moParam& param( GetParam( nameparam ));
1027 
1028  return param.GetValue( indexvalue );
1029 }
1030 
1031 moValue&
1032 moConfig::GetValue( int indexparam, int indexvalue ) {
1033 
1034  moParam& param( GetParam( indexparam ));
1035 
1036  return param.GetValue( indexvalue );
1037 
1038 }
1039 
1040 
1041 MOint
1042 moConfig::Int( moParamReference p_paramreference ) {
1043  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1044  if (param.GetData()) return param.GetData()->Int();
1045  return param.GetValue().GetSubValue().Int();
1046 }
1047 
1048 MOint
1049 moConfig::Int( moText p_param_name ) {
1050  moParam& param(GetParam(p_param_name));
1051  if (param.GetData()) return param.GetData()->Int();
1052  return param.GetValue().GetSubValue().Int();
1053 }
1054 
1055 MOdouble
1056 moConfig::Double( moParamReference p_paramreference ) {
1057  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1058  if (param.GetData()) return param.GetData()->Double();
1059  return param.GetValue().GetSubValue().Double();
1060 }
1061 
1062 MOdouble
1063 moConfig::Double( moText p_param_name ) {
1064  moParam& param(GetParam(p_param_name));
1065  if (param.GetData()) return param.GetData()->Double();
1066  return param.GetValue().GetSubValue().Double();
1067 }
1068 
1069 moText
1070 moConfig::Text( moParamReference p_paramreference ) {
1071  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1072  if (param.GetData()) return param.GetData()->Text();
1073  return param.GetValue().GetSubValue().Text();
1074 }
1075 
1076 moText
1077 moConfig::Text( moText p_param_name ) {
1078  moParam& param(GetParam(p_param_name));
1079  if (param.GetData()) return param.GetData()->Text();
1080  return param.GetValue().GetSubValue().Text();
1081 }
1082 
1083 moText
1084 moConfig::Text( int p_param_index ) {
1085  moParam& param(GetParam(p_param_index));
1086  if (param.GetData()) return param.GetData()->Text();
1087  return param.GetValue().GetSubValue().Text();
1088 }
1089 
1090 moVector4d
1092 
1093  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1094  moVector4d full_color(0.0,0.0,0.0,1.0);
1095  double r,g,b,a;
1096  if (param.GetValue().GetSubValueCount()==4) {
1097  r = param.GetValue().GetSubValue(MO_RED).Eval();
1098  g = param.GetValue().GetSubValue(MO_GREEN).Eval();
1099  b = param.GetValue().GetSubValue(MO_BLUE).Eval();
1100  a = param.GetValue().GetSubValue(MO_ALPHA).Eval();
1101  full_color = moVector4d( r, g, b, a);
1102  }
1103  return full_color;
1104 
1105 }
1106 
1107 moVector4d
1108 moConfig::EvalColor( moParamReference p_paramreference, double x, ... ) {
1109 
1110  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1111  moVector4d full_color(0.0,0.0,0.0,1.0);
1112  double r,g,b,a;
1113  if (param.GetValue().GetSubValueCount()==4) {
1114  r = param.GetValue().GetSubValue(MO_RED).Eval( x );
1115  g = param.GetValue().GetSubValue(MO_GREEN).Eval( x );
1116  b = param.GetValue().GetSubValue(MO_BLUE).Eval( x );
1117  a = param.GetValue().GetSubValue(MO_ALPHA).Eval( x );
1118  full_color = moVector4d( r, g, b, a);
1119  }
1120  return full_color;
1121 
1122 }
1123 
1124 MOdouble
1125 moConfig::Eval( moParamReference p_paramreference, double x, ... ) {
1126 
1127  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1128  moData* pdata = param.GetData();
1129  if (pdata) {
1130  return pdata->Eval( x );
1131  }
1132  return 0.0f;
1133 
1134 }
1135 
1136 MOdouble
1137 moConfig::Eval( moText p_param_name , double x, ... ) {
1138 
1139  moParam& param( GetParam(p_param_name) );
1140  moData* pdata = param.GetData();
1141  if (pdata) {
1142  return pdata->Eval( x );
1143  }
1144  return 0.0f;
1145 
1146 }
1147 
1148 MOdouble
1149 moConfig::Eval( moParamReference p_paramreference ) {
1150 
1151  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1152  moData* pdata = param.GetData();
1153  if (pdata) {
1154  return pdata->Eval();
1155  }
1156  return 0.0f;
1157 }
1158 
1159 MOdouble
1160 moConfig::Eval( moText p_param_name ) {
1161 
1162  moParam& param( GetParam(p_param_name) );
1163  moData* pdata = param.GetData();
1164  if (pdata) {
1165  return pdata->Eval();
1166  }
1167  return 0.0f;
1168 
1169 }
1170 
1171 GLint
1172 moConfig::GetGLId( moParamReference p_paramreference, moMoldeoObject *p_object, moTempo *p_tempo, MOfloat p_fade, const moTextFilterParam &p_filterparam ) {
1173  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1174  moData* pdata = param.GetData();
1175  if (pdata) {
1176  return pdata->GetGLId( p_object, p_tempo, p_fade, p_filterparam );
1177  }
1178  return 0;
1179 }
1180 
1181 GLint
1182 moConfig::GetGLId( moParamReference p_paramreference, moMoldeoObject *p_object, moTempo *p_tempo ) {
1183  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1184  moData* pdata = param.GetData();
1185  if (pdata) {
1186  return pdata->GetGLId( p_object, p_tempo );
1187  }
1188  return 0;
1189 }
1190 
1191 
1192 GLint
1193 moConfig::GetGLId( moParamReference p_paramreference, moMoldeoObject *p_object ) {
1194  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1195  moData* pdata = param.GetData();
1196  if (pdata) {
1197  return pdata->GetGLId( p_object );
1198  }
1199  return 0;
1200 }
1201 
1202 
1203 GLint
1204 moConfig::GetGLId( moParamReference p_paramreference, MOfloat p_cycle, MOfloat p_fade, const moTextFilterParam &p_filterparam ) {
1205  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1206  moData* pdata = param.GetData();
1207  if (pdata) {
1208  return pdata->GetGLId( p_cycle, p_fade, p_filterparam );
1209  }
1210  return 0;
1211 }
1212 
1213 GLint
1214 moConfig::GetGLId( moParamReference p_paramreference, moTempo *p_tempo, MOfloat p_fade, const moTextFilterParam &p_filterparam ) {
1215  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1216  moData* pdata = param.GetData();
1217  if (pdata) {
1218  return pdata->GetGLId( p_tempo, p_fade, p_filterparam );
1219  }
1220  return 0;
1221 }
1222 
1223 GLint
1224 moConfig::GetGLId( moParamReference p_paramreference, MOuint p_i, MOfloat p_fade, const moTextFilterParam &p_filterparam ) {
1225  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1226  moData* pdata = param.GetData();
1227  if (pdata) {
1228  return pdata->GetGLId( p_i, p_fade, p_filterparam );
1229  }
1230  return 0;
1231 }
1232 
1233 GLint
1234 moConfig::GetGLId( moParamReference p_paramreference, MOfloat p_fade, const moTextFilterParam &p_filterparam ) {
1235  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1236  moData* pdata = param.GetData();
1237  if (pdata) {
1238  return pdata->GetGLId( p_fade, p_filterparam );
1239  }
1240  return 0;
1241 }
1242 
1243 
1244 GLint
1245 moConfig::GetGLId( moParamReference p_paramreference, MOfloat p_cycle ) {
1246 
1247  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1248  moData* pdata = param.GetData();
1249  if (pdata) {
1250  moTextFilterParam filterparam;
1251  return pdata->GetGLId( p_cycle, 1.0, filterparam );
1252  }
1253  return 0;
1254 }
1255 
1256 GLint
1257 moConfig::GetGLId( moParamReference p_paramreference, moTempo *p_tempo) {
1258  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1259  moData* pdata = param.GetData();
1260  if (pdata) {
1261  moTextFilterParam filterparam;
1262  return pdata->GetGLId( p_tempo, 1.0, filterparam );
1263  }
1264  return 0;
1265 }
1266 
1267 GLint
1268 moConfig::GetGLId( moParamReference p_paramreference, MOuint p_i ) {
1269  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1270  moData* pdata = param.GetData();
1271  if (pdata) {
1272  moTextFilterParam filterparam;
1273  return pdata->GetGLId( p_i, 1.0, filterparam );
1274  }
1275  return 0;
1276 }
1277 
1278 GLint
1280  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1281  moData* pdata = param.GetData();
1282  if (pdata) {
1283  moTextFilterParam filterparam;
1284  return pdata->GetGLId( 1.0, filterparam );
1285  }
1286  return 0;
1287 }
1288 
1290 moConfig::Fun( moParamReference p_paramreference ) {
1291  if ( p_paramreference.reference == -1 ) {
1293  return *m_pFun;
1294  }
1295  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1296  moData* pdata = param.GetData();
1297  if (pdata) {
1298  moMathFunction* pFun = pdata->Fun();
1299  if (pFun) {
1300  return *pFun;
1301  }
1302  }
1303  return (*m_pFun);
1304 }
1305 
1306 const moFont&
1307 moConfig::Font( moParamReference p_paramreference ) {
1308  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1309  moData* pdata = param.GetData();
1310  if (pdata) {
1311  moFont* pFont = pdata->Font();
1312  if (pFont) {
1313  return *pFont;
1314  }
1315  }
1316  return (*m_pFont);
1317 }
1318 
1319 const moTextureBuffer&
1321 
1322  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1323  moData* pdata = param.GetData();
1324  if (pdata) {
1325  moTextureBuffer* pTextureBuffer = pdata->TextureBuffer();
1326  if (pTextureBuffer) {
1327  return *pTextureBuffer;
1328  }
1329  }
1330  return (*m_pTextureBuffer);
1331 
1332 }
1333 
1334 const moSceneNode&
1335 moConfig::Model( moParamReference p_paramreference ) {
1336 
1337  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1338  moData* pdata = param.GetData();
1339  if (pdata) {
1340  moSceneNode* pModel = pdata->Model();
1341  if (pModel) {
1342  return *pModel;
1343  }
1344  }
1345  return (*m_pModel);
1346 
1347 }
1348 
1349 const moVector2d&
1351 
1352  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1353  moData* pdata = param.GetData();
1354  if (pdata) {
1355  moVector2d* pVector = pdata->Vector2d();
1356  if (pVector) {
1357  return *pVector;
1358  }
1359  }
1360  return (*m_pVector2d);
1361 
1362 }
1363 
1364 const moVector2i&
1366 
1367  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1368  moData* pdata = param.GetData();
1369  if (pdata) {
1370  moVector2i* pVector = pdata->Vector2i();
1371  if (pVector) {
1372  return *pVector;
1373  }
1374  }
1375  return (*m_pVector2i);
1376 
1377 }
1378 
1379 const moVector3d&
1381 
1382  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1383  moData* pdata = param.GetData();
1384  if (pdata) {
1385  moVector3d* pVector = pdata->Vector3d();
1386  if (pVector) {
1387  return *pVector;
1388  }
1389  }
1390  return (*m_pVector3d);
1391 
1392 }
1393 
1394 const moVector3i&
1396 
1397  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1398  moData* pdata = param.GetData();
1399  if (pdata) {
1400  moVector3i* pVector = pdata->Vector3i();
1401  if (pVector) {
1402  return *pVector;
1403  }
1404  }
1405  return (*m_pVector3i);
1406 
1407 }
1408 
1409 const moVector4d&
1411 
1412  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1413  moData* pdata = param.GetData();
1414  if (pdata) {
1415  moVector4d* pVector = pdata->Vector4d();
1416  if (pVector) {
1417  return *pVector;
1418  }
1419  }
1420  return (*m_pVector4d);
1421 
1422 }
1423 
1424 
1425 const moVector4i&
1427 
1428  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1429  moData* pdata = param.GetData();
1430  if (pdata) {
1431  moVector4i* pVector = pdata->Vector4i();
1432  if (pVector) {
1433  return *pVector;
1434  }
1435  }
1436  return (*m_pVector4i);
1437 
1438 }
1439 
1440 const moDataMessage&
1442 
1443  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1444  moData* pdata = param.GetData();
1445  if (pdata) {
1446  moDataMessage* pVector = pdata->Message();
1447  if (pVector) {
1448  return *pVector;
1449  }
1450  }
1451  return (*m_pMessage);
1452 
1453 }
1454 
1455 const moDataMessages&
1457 
1458  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1459  moData* pdata = param.GetData();
1460  if (pdata) {
1461  moDataMessages* pVector = pdata->Messages();
1462  if (pVector) {
1463  return *pVector;
1464  }
1465  }
1466  return (*m_pMessages);
1467 
1468 }
1469 
1470 moSound&
1471 moConfig::Sound( moParamReference p_paramreference ) {
1472 
1473  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1474  moData* pdata = param.GetData();
1475  if (pdata) {
1476  moSound* pVector = pdata->Sound();
1477  if (pVector) {
1478  return *pVector;
1479  }
1480  }
1481  return (*m_pSound);
1482 
1483 }
1484 
1485 const moTexture&
1487 
1488  moParam& param( GetParam( m_ConfigDefinition.ParamIndexes().GetRef(p_paramreference.reference) ));
1489  moData* pdata = param.GetData();
1490  if (pdata) {
1491  moTexture* pTexture = pdata->Texture();
1492  if (pTexture) {
1493  return *pTexture;
1494  }
1495  }
1496  return (*m_pTexture);
1497 
1498 }
1499 
1500 void
1502 p_paramindex, int p_valueindex ) {
1503  m_Params[p_paramindex].SetIndexValue( p_valueindex );
1504 }
1505 
1506 int
1508  return m_Params.Get( p_paramindex ).GetIndexValue();
1509 }
1510 
1511 moValue&
1513  return m_Params[m_CurrentParam].GetValue();
1514 }
1515 
1516 moParam&
1518  return m_Params[m_CurrentParam];
1519 }
1520 
1521 
1522 int
1524  return m_CurrentParam;
1525 }
1526 
1527 bool
1528 moConfig::SetCurrentParamIndex( int p_currentparam ) {
1529  if ( 0<=p_currentparam
1530  && p_currentparam<(int)m_Params.Count()) {
1531  m_CurrentParam = p_currentparam;
1532  return true;
1533  }
1534  return false;
1535 }
1536 
1537 void
1539  if ( m_Params.Count()>0 ) {
1540  m_CurrentParam = 0;
1541  } else m_CurrentParam = -1;
1542 }
1543 
1544 void
1546  if ( m_Params.Count()>0 ) {
1547  if ( m_CurrentParam < ( (MOint)m_Params.Count()-1 ) ) {
1548  m_CurrentParam++;
1549  }
1550  } else m_CurrentParam = -1;
1551 }
1552 
1553 void
1555  if ( m_Params.Count() > 0 ) {
1556  if ( m_CurrentParam > 0 ) {
1557  m_CurrentParam--;
1558  }
1559  } else m_CurrentParam = -1;
1560 }
1561 
1562 bool
1564  if ( m_CurrentParam>=0 ) {
1565  moParam& pParam( m_Params[m_CurrentParam] );
1566  if ( pParam.GetValuesCount() == 0 ) {
1567  return false;
1568  }
1569  pParam.FirstValue();
1570  return true;
1571  }
1572  return false;
1573 }
1574 
1575 bool
1577  if ( m_CurrentParam>=0 ) {
1578  moParam& pParam( m_Params[m_CurrentParam] );
1579  if ( pParam.GetIndexValue() == (int)(pParam.GetValuesCount()-1) ) {
1580  return false;
1581  }
1582  pParam.NextValue();
1583  return true;
1584  }
1585  return false;
1586 }
1587 
1588 bool
1590  if ( m_CurrentParam>=0 ) {
1591  moParam& pParam( m_Params[m_CurrentParam] );
1592  if ( pParam.GetIndexValue() == 0 ) {
1593  return false;
1594  }
1595  pParam.PrevValue();
1596  return true;
1597  }
1598  return false;
1599 }
1600 
1601 
1604 
1605  return &m_ConfigDefinition;
1606 
1607 }
1608 
1609 //PRECONFIGS
1610 
1611 MOint
1613  return m_PreConfigs.Count();
1614 }
1615 
1616 MOint
1618  return m_PreconfActual;
1619 }
1620 
1621 void
1623  if(0<=p_actual && p_actual<(MOint)m_PreConfigs.Count())
1624  {
1625  for( MOuint i=0; i<m_PreConfigs[p_actual].m_PreconfIndexes.Count(); i++) {
1626  moPreconfigParamIndex Val = m_PreConfigs[p_actual][i];
1627  SetCurrentValueIndex( Val.m_ParamIndex, Val.m_ValueIndex);
1628  }
1629  m_PreconfActual = p_actual;
1630  }
1631 }
1632 
1633 void
1635  if(m_PreConfigs.Count()>0)
1636  SetCurrentPreConf( 0 );
1637 }
1638 
1639 void
1641  if( m_PreconfActual!=-1 && (m_PreconfActual<((MOint)m_PreConfigs.Count()-1)) )
1642  SetCurrentPreConf( ++m_PreconfActual );
1643 }
1644 
1645 void
1647  if(m_PreconfActual!=-1 && m_PreconfActual>0)
1648  SetCurrentPreConf( --m_PreconfActual );
1649 }
1650 
1651 
1653 void
1654 moConfig::AddValue( int paramindex, moValue& p_value ) {
1655  GetParam( paramindex ).AddValue( p_value );
1656 }
1657 
1659 void
1660 moConfig::InsertValue( int paramindex, int valueindex, moValue& p_value ) {
1661  GetParam( paramindex ).GetValues().Insert( valueindex, p_value );
1662 }
1663 
1665 void
1666 moConfig::SetValue( int paramindex, int valueindex, moValue& p_value ) {
1667  GetParam( paramindex ).GetValue( valueindex ) = p_value;
1668 }
1669 
1671 void
1672 moConfig::DeleteValue( int paramindex, int valueindex ) {
1673 
1674  GetParam( paramindex ).DeleteValue( valueindex );
1675 
1676 }
1677 
1678 
1679 const moPreConfig&
1680 moConfig::GetPreconfig( int valueindex ) {
1681  if (0<=valueindex && valueindex<GetPreConfCount() ) {
1682  return m_PreConfigs.Get( valueindex );
1683  }
1684  return m_PreConfigs.Get(-1);
1685 }
1686 
1687 void
1688 moConfig::AddPreconfig( moPreconfigIndexes& p_preconfindexes ) {
1689  m_PreConfigs.Add( moPreConfig( p_preconfindexes ) );
1690 }
1691 
1692 void
1693 moConfig::AddPreconfig( int preconfig_index) {
1694 
1695  int new_preconfigs = preconfig_index - GetPreConfCount() + 1;
1696 
1697  //MODebug2->Message("moConsole::ProcessMoldeoAPIMessage > Adding Preconfigs: " + IntToStr(valcount) );
1698  //mo->Message("moConfig::AddPreconfig > Adding Preconfigs: " + IntToStr(new_preconfigs) );
1699 
1700  if (new_preconfigs>0) {
1701  int base_index = GetPreConfCount();
1702  int min_index = 0;
1703  for( int sum=0; sum < new_preconfigs ; sum++ ) {
1704 
1705  moPreConfig newPreCfg;
1706 
1709  for( int pi=0; pi < GetParamsCount(); pi++) {
1710  moParam& rParam2( GetParam(pi) );
1711  int nvalues = GetParam(pi).GetValuesCount();
1712  min_index = nvalues - 1;
1713 
1714  if ( nvalues > 1 || ( preconfig_index==0 && rParam2.GetParamDefinition().GetName()!="inlet" && rParam2.GetParamDefinition().GetName()!="outlet" ) ) {
1715 
1716  moPreconfigParamIndex preIndexA;
1717 
1718  preIndexA.m_ParamName = rParam2.GetParamDefinition().GetName();
1719  preIndexA.m_ParamIndex = rParam2.GetParamDefinition().GetIndex();
1720  preIndexA.m_ValueIndex = momin( min_index, base_index+sum );
1721 
1722  newPreCfg.m_PreconfIndexes.Add( preIndexA );
1723 
1724  }
1725  }
1726 
1727  AddPreconfig( newPreCfg.m_PreconfIndexes );
1728  }
1729  }
1730 
1731 }
1732 
1733 
1734 void
1735 moConfig::InsertPreconfig( int valueindex, moPreconfigIndexes& p_preconfindexes ) {
1736  m_PreConfigs.Insert( valueindex, moPreConfig( p_preconfindexes ) );
1737 }
1738 
1739 void
1740 moConfig::SetPreconfig( int valueindex, moPreconfigIndexes& p_preconfindexes ) {
1741  m_PreConfigs.Set( valueindex, moPreConfig( p_preconfindexes ) );
1742 }
1743 
1744 void
1745 moConfig::DeletePreconfig( int valueindex ) {
1746  m_PreConfigs.Remove( valueindex );
1747 }
1748 
1749 const moText&
1751 
1752  moText fieldSeparation = ",";
1753 
1754  m_FullJSON = "{";
1755 
1756  m_FullJSON+= "'configdefinition': " + this->GetConfigDefinition()->ToJSON();
1757  m_FullJSON+= fieldSeparation + "'currentpreconfig':" + IntToStr( this->GetCurrentPreConf() );
1758  m_FullJSON+= fieldSeparation + "'parameters': {";
1759 
1760  fieldSeparation = "";
1761 
1762  for( int p=0; p<(int)m_Params.Count();p++) {
1763  moParam Param = m_Params[p];
1764  if ( Param.GetParamDefinition().GetType()==MO_PARAM_INLET
1765  || Param.GetParamDefinition().GetType()==MO_PARAM_OUTLET ) {
1767  } else {
1768  m_FullJSON+= fieldSeparation + "'" + Param.GetParamDefinition().GetName() + "': " + "{";
1769  m_FullJSON+= "}";
1770  fieldSeparation = ",";
1771  }
1772 
1773  }
1774  m_FullJSON+= "}";
1775 
1776  fieldSeparation = ",";
1777  m_FullJSON+= fieldSeparation + "'preconfigs': [";
1778  fieldSeparation = "";
1779  for( int pre=0; pre<(int)m_PreConfigs.Count();pre++) {
1780  moPreConfig PreConfig = m_PreConfigs[pre];
1781  //m_FullJSON+= fieldSeparation + PreConfig.ToJSON();
1782  m_FullJSON+= fieldSeparation + "{'n': '"+PreConfig.m_Name+"'}";
1783  fieldSeparation = ",";
1784  }
1785  m_FullJSON+= "]";
1786 
1787  m_FullJSON+= "}";
1788  return m_FullJSON;
1789 
1790 }
moText m_ObjectName
Definition: moConfig.h:164
void AddValue(int paramindex, moValue &p_value)
Agrega un valor.
Definition: moConfig.cpp:1654
Valor de un Parámetro.
Definition: moValue.h:501
const moTextureBuffer & TextureBuffer(moParamReference p_paramreference)
Definition: moConfig.cpp:1320
bool FixType(moParamType m_NewType=MO_PARAM_UNDEFINED)
Definition: moParam.cpp:1320
moVector4i * Vector4i()
Definition: moValue.cpp:400
static moMathFunction * m_pFun
Definition: moConfig.h:566
MOdouble Eval()
Definition: moValue.cpp:424
static moVector3d * m_pVector3d
Definition: moConfig.h:571
static void Message(moText p_text)
Anuncia un mensaje al usuario además de guardarlo en el log de texto.
moTextArray & GetOptions()
Definition: moParam.h:317
void PreConfNext()
Selecciona el pr�ximo valor de la preconfiguraci�n.
Definition: moConfig.cpp:1640
const moText & GetObjectClass()
Devuelve el nombre de la clase del objeto asociado a este config.
Definition: moConfig.h:125
GLint GetGLId(moParamReference p_paramreference, moMoldeoObject *p_object, moTempo *p_tempo, MOfloat p_fade, const moTextFilterParam &p_filterparam)
Acceso r�pido a los datos de una textura.
Definition: moConfig.cpp:1172
moVector4< MOlong > moVector4i
void SetOptions(const moTextArray &p_options)
Definition: moParam.cpp:586
static moVector3i * m_pVector3i
Definition: moConfig.h:572
const moText & ToJSON()
Devuelve la estructura del config en formato JSON.
Definition: moConfig.cpp:1750
#define MO_BLUE
Definition: moTypes.h:443
const moText & GetName() const
Definition: moParam.h:266
void Error(moText p_text)
Anuncia y registra un error.
Definition: moAbstract.cpp:79
Tempo, beat, ritmo.
Definition: moTempo.h:44
static moDataMessages * m_pMessages
Definition: moConfig.h:576
moMathFunction * Fun()
referencias a clases
Definition: moValue.cpp:417
MOdouble Double() const
Definition: moValue.cpp:859
clase base para una fuente 3d o 2d
Definition: moFontManager.h:63
moParamType
Definition: moParam.h:40
moParams & GetParams()
Devuelve el puntero al arreglo de par�metros.
Definition: moConfig.cpp:977
static bool FileExists(moText filename)
const moVector3d & Vector3d(moParamReference p_paramreference)
Definition: moConfig.cpp:1380
moValueBase & GetSubValue(MOint p_indexsubvalue=0)
Definition: moValue.h:539
moText GetCodeName() const
Definition: moValue.cpp:1308
MOdouble Eval(moParamReference p_paramreference, double x,...)
Acceso r�pido a evaluar la funci�n.
Definition: moConfig.cpp:1125
const moVector4i & Vector4i(moParamReference p_paramreference)
Definition: moConfig.cpp:1426
MOint GetCurrentPreConf()
Devuelve el �ndice de la preconfiguraci�n seleccionada.
Definition: moConfig.cpp:1617
void Set(moText p_objectname, moText p_objectclass)
Fija el nombre y la clase del objeto a configurar.
Definition: moConfig.h:106
void InsertPreconfig(int valueindex, moPreconfigIndexes &p_preconfindexes)
Inserta una pre-configuraci�n.
Definition: moConfig.cpp:1735
moTextureBuffer * TextureBuffer()
Definition: moValue.cpp:479
bool NextValue()
Selecciona el pr�ximo valor del par�metro actual.
Definition: moConfig.cpp:1576
#define MO_CONFIGFILE_NOT_FOUND
Definition: moConfig.h:42
void PrevParam()
Selecciona el par�metro anterior.
Definition: moConfig.cpp:1554
static moTexture * m_pTexture
Definition: moConfig.h:578
moDatas moDataMessage
Definition: moValue.h:149
LIBMOLDEO_API moText0 FloatToStr(double a)
Definition: moText.cpp:1134
MOdouble Double(moParamReference p_paramreference)
Acceso r�pido a un valor double.
Definition: moConfig.cpp:1056
void SetPreconfig(int valueindex, moPreconfigIndexes &p_preconfindexes)
Setea una pre-configuraci�n.
Definition: moConfig.cpp:1740
void PreConfFirst()
Selecciona el primer valor de la preconfiguraci�n.
Definition: moConfig.cpp:1634
#define MOboolean
Definition: moTypes.h:385
MOlong index
Definition: moParam.h:124
static void Error(moText p_text)
Anuncia un error.
const moText & ToJSON()
Devuelve en formato texto la estructura del objeto convertida a JSON.
Definition: moConfig.cpp:252
int GetParamIndex(moText p_paramname)
Devuelve el �ndice correspondiente al par�metro por nombre.
Definition: moConfig.cpp:1008
MOint Int() const
Definition: moValue.cpp:773
const moText & GetObjectName()
Devuelve el nombre del objeto asociado a este config.
Definition: moConfig.h:116
const moFont & Font(moParamReference p_paramreference)
Definition: moConfig.cpp:1307
MOint Int(moParamReference p_paramreference)
Acceso r�pido a un valor entero.
Definition: moConfig.cpp:1042
MOint GetIndex() const
Definition: moParam.h:284
virtual ~moConfig()
Destructor.
Definition: moConfig.cpp:275
int GetIndexValue() const
Definition: moParam.cpp:1227
void Replace(const moText0 &target, const moText0 &replacement)
Definition: moText.cpp:729
const moVector3i & Vector3i(moParamReference p_paramreference)
Definition: moConfig.cpp:1395
moParamType GetType() const
Definition: moParam.h:277
void SetCodeName(moText p_codename)
Fija el nombre del código para este valor.
Definition: moValue.cpp:1518
moValue & GetDefaultValue()
Definition: moParam.h:309
const moVector2d & Vector2d(moParamReference p_paramreference)
Definition: moConfig.cpp:1350
void Warning(moText p_text)
Anuncia y registra un llamado de atencion.
Definition: moAbstract.cpp:97
void PreConfPrev()
Selecciona el valor anterior de la preconfiguraci�n.
Definition: moConfig.cpp:1646
const moText & GetGroup() const
Definition: moParam.h:299
moParamIndexes m_ParamIndexes
Definition: moConfig.h:162
void SetValue(int paramindex, int valueindex, moValue &p_value)
Fija un valor.
Definition: moConfig.cpp:1666
MOuint Length() const
Definition: moText.cpp:347
void FixConfig()
Corrige el archivo de configuraci�n.
Definition: moConfig.cpp:305
void InsertValue(int paramindex, int valueindex, moValue &p_value)
Inserta un valor.
Definition: moConfig.cpp:1660
definici�n de todos los par�metros a encontrar o a crear dentro del moConfig
Definition: moConfig.h:57
MOboolean Exists()
Definition: moFile.cpp:436
#define MOfloat
Definition: moTypes.h:403
moDataMessages * Messages()
Definition: moValue.cpp:412
moText m_ObjectClass
Definition: moConfig.h:165
MOuint GetValuesCount() const
Definition: moParam.cpp:1065
void DeleteValue(int paramindex, int valueindex)
Borra un valor.
Definition: moConfig.cpp:1672
const moDataMessages & Messages(moParamReference p_paramreference)
Definition: moConfig.cpp:1456
clase de para manejar textos
Definition: moText.h:75
MOuint GetValuesCount(int p_paramindex)
Devuelve la cantidad de valores que contiene el par�metro indexado.
Definition: moConfig.cpp:1019
vector of one type
Definition: moParam.h:72
moMathFunction & Fun(moParamReference p_paramreference)
referencias a clases
Definition: moConfig.cpp:1290
void SetCurrentValueIndex(int p_paramindex, int p_valueindex)
Posiciona el puntero de selecci�n del valor del par�metro a la posici�n indicada.
Definition: moConfig.cpp:1501
bool Exists(moText p_name)
Verifica si el parametro no existe ya.
Definition: moConfig.cpp:89
void SetDefaultValue()
Definition: moParam.cpp:1081
const moValueDefinition & GetValueDefinition() const
Devuelve una referencia a la definición del valor [ nombre de codigo, rango, tipo, índice ].
Definition: moValue.h:415
moText0 moText
Definition: moText.h:291
static moVector4i * m_pVector4i
Definition: moConfig.h:574
void NextParam()
Selecciona el pr�ximo par�metro.
Definition: moConfig.cpp:1545
void DeletePreconfig(int valueindex)
Borra una pre-configuraci�n.
Definition: moConfig.cpp:1745
int LoadConfig(moText p_filename)
Lee la configuracion de un archivo.
Definition: moConfig.cpp:402
moText GetFullText()
Devuelve el contenido completo de la configuraci�n como texto plano.
Definition: moConfig.cpp:913
#define MOint
Definition: moTypes.h:388
static moDataMessage * m_pMessage
Definition: moConfig.h:575
const moText & GetProperty() const
Definition: moParam.h:291
moDataMessage * Message()
Definition: moValue.cpp:407
Clase Base para Objetos Moldeo ( moEffect, moIODevice, moResource, moConsole )
MOlong GetDuration()
Definition: moParam.cpp:739
static moTextureBuffer * m_pTextureBuffer
Definition: moConfig.h:567
static moVector4d * m_pVector4d
Definition: moConfig.h:573
moConfigDefinition & operator=(const moConfigDefinition &p_src)
assignment copy operator
Definition: moConfig.cpp:76
clase base para el manejo de una textura
Definition: moTexture.h:78
int GetParamsCount()
Devuelve la cantidad de par�metros de la configurac��n.
Definition: moConfig.cpp:1003
#define MO_PARAM_NOT_FOUND
Definition: moConfig.h:41
const moVector4d & Vector4d(moParamReference p_paramreference)
Definition: moConfig.cpp:1410
void CreateParam(moParamDefinition &p_ParamDef)
Definition: moConfig.cpp:826
void PrevValue()
Definition: moParam.cpp:1244
MOboolean CreateDefault(const moText &p_fullconfigfilename)
Devuelve true si pudo crear el archivo de configuraci�n junto con su archivo correspondiente.
Definition: moConfig.cpp:848
int GetCurrentValueIndex(MOint p_paramindex)
Devuelve el �ndice correspondiente al valor seleccionado del par�metro por �ndice de par�metr...
Definition: moConfig.cpp:1507
#define MO_GREEN
Definition: moTypes.h:442
moVector3d * Vector3d()
Definition: moValue.cpp:385
moParamInterpolation & GetInterpolation()
Definition: moParam.h:329
moConfigDefinition * GetConfigDefinition()
Devuelve el puntero al objeto de definici�n de la configuraci�n.
Definition: moConfig.cpp:1603
bool FixOptions(moTextArray &m_NewOptions)
Definition: moParam.cpp:1360
GLint GetGLId(MOfloat p_cycle, MOfloat p_fade, const moTextFilterParam &p_filterparam)
Definition: moValue.cpp:956
Clase base de sonido.
MOboolean IsConfigLoaded()
Indica si ha sido cargado con �xito el archivo de configuraci�n.
Definition: moConfig.cpp:279
moSceneNode * Model()
Definition: moValue.cpp:487
void DeleteConfig()
Borra la configuracion de par�metros con sus respectivos valores.
Definition: moConfig.cpp:906
moVector3< MOdouble > moVector3d
moValue & GetValue(moText nameparam, int indexvalue=-1)
Devuelve el valor indicado por el nombre del par�metro y el �ndice del valor. ...
Definition: moConfig.cpp:1024
moText m_Name
Definition: moPreConfig.h:90
value type: TXT or LNK
Definition: moParam.h:50
bool PreviousValue()
Selecciona el valor anterior del par�metro actual.
Definition: moConfig.cpp:1589
moConfig()
Constructor.
Definition: moConfig.cpp:269
static moDebug * MODebug2
Clase de impresión de errores para depuración.
Definition: moAbstract.h:225
const moVector2i & Vector2i(moParamReference p_paramreference)
Definition: moConfig.cpp:1365
moVector3i * Vector3i()
Definition: moValue.cpp:390
value type: NUM or FUNCTION
Definition: moParam.h:42
moVector2< MOlong > moVector2i
Definition: moMathVector.h:422
moText Text()
Definition: moValue.cpp:539
const moSceneNode & Model(moParamReference p_paramreference)
Definition: moConfig.cpp:1335
void Indexation()
Indexa los par�metros.
Definition: moConfig.cpp:286
const moDataMessage & Message(moParamReference p_paramreference)
Definition: moConfig.cpp:1441
void SetCurrentPreConf(MOint p_actual)
Posiciona la preconfiguraci�n actual en el �ndice indicado.
Definition: moConfig.cpp:1622
moSound & Sound(moParamReference p_paramreference)
Definition: moConfig.cpp:1471
MOlong reference
Definition: moParam.h:98
const moPreConfig & GetPreconfig(int valueindex)
Agrega una pre-configuraci�n.
Definition: moConfig.cpp:1680
moVector2i * Vector2i()
Definition: moValue.cpp:380
void AddValue(moValue &value)
Definition: moParam.cpp:1071
moVector2< MOdouble > moVector2d
Definition: moMathVector.h:424
moValue & GetValue(MOint i=-1)
Definition: moParam.cpp:1204
moParam & GetParam(MOint p_paramindex=-1)
Devuelve el par�metro por �ndice.
Definition: moConfig.cpp:984
#define MOdouble
Definition: moTypes.h:404
moText GetFunctionToText()
Definition: moParam.cpp:799
void SetIndex(MOint p_index)
Definition: moParam.h:287
bool SetParamIndex(int defined_array_index, moParamIndex paramindex)
Fija el indice del array con el indice del parametro...
Definition: moConfig.cpp:223
moConfigDefinition()
constructor
Definition: moConfig.cpp:62
static moVector2d * m_pVector2d
Definition: moConfig.h:569
moParamDefinition & GetParamDefinition()
Definition: moParam.cpp:1268
const moTexture & Texture(moParamReference p_paramreference)
Definition: moConfig.cpp:1486
moVector4d * Vector4d()
Definition: moValue.cpp:395
void Add(const moText &p_name, moParamType p_type, int p_index=-1, const moValue &p_defaultvalue=moValue("INVALID", MO_VALUE_UNDEFINED), const moText &p_OptionsStr=moText(""))
Agrega la definici�n de un par�metro con un valor predeterminado a tomar.
Definition: moConfig.cpp:139
moVector3< MOlong > moVector3i
int SaveConfig(moText p_filename=moText(""))
Guarda la configuracion en un archivo f�sico.
Definition: moConfig.cpp:652
int GetCurrentParamIndex() const
Devuelve el �ndice del par�metro actualmente seleccionado.
Definition: moConfig.cpp:1523
void SetDefault(const moValue &p_defaultvalue)
Definition: moParam.cpp:505
moPreconfigIndexes m_PreconfIndexes
Definition: moPreConfig.h:92
#define MOuint
Definition: moTypes.h:387
LIBMOLDEO_API moText0 IntToStr(int a)
Definition: moText.cpp:1070
moParam & GetCurrentParam()
Devuelve el par�metro actualmente seleccionado.
Definition: moConfig.cpp:1517
void AddPreconfig(moPreconfigIndexes &p_preconfindexes)
Agrega una pre-configuraci�n.
Definition: moConfig.cpp:1688
moVector4d EvalColor(moParamReference p_paramreference)
Definition: moConfig.cpp:1091
void SetCodeName(moText p_codename)
Definition: moValue.cpp:1313
moVector4< MOdouble > moVector4d
static moFont * m_pFont
solo para poder devolver una referencia
Definition: moConfig.h:565
void FirstValue()
Definition: moParam.cpp:1254
void SetValueDefinition(moValueDefinition &p_valuedefinition)
Fija la definición del valor [ nombre de codigo, rango, tipo, índice ].
Definition: moValue.h:405
bool SetCurrentParamIndex(int)
Selecciona el par�metro por el �ndice.
Definition: moConfig.cpp:1528
bool SetIndex(moText p_name, MOint p_index)
Definition: moConfig.cpp:114
static moSound * m_pSound
Definition: moConfig.h:577
moFont * Font()
Definition: moValue.cpp:474
void FirstParam()
Selecciona el primer par�metro.
Definition: moConfig.cpp:1538
MOuint GetSubValueCount()
Definition: moValue.h:545
moData * GetData()
Definition: moParam.cpp:1286
moSound * Sound()
Definition: moValue.cpp:493
const moParamDefinition & GetParamDefinition(const moText &p_param_name)
Definition: moConfig.cpp:99
virtual ~moConfigDefinition()
destructor
Definition: moConfig.cpp:66
void NextValue()
Definition: moParam.cpp:1234
value type: TXT or LNK
Definition: moParam.h:73
MOint GetPreConfCount()
Devuelve la cantidad de preconfiguraciones definidas.
Definition: moConfig.cpp:1612
moValue & GetCurrentValue()
Devuelve el valor actual del par�metro actual.
Definition: moConfig.cpp:1512
void UnloadConfig()
Elimina todos los par�metros anteriormente cargados.
Definition: moConfig.cpp:898
static moVector2i * m_pVector2i
Definition: moConfig.h:570
void Message(moText p_text)
Anuncia un mensaje al usuario además de guardarlo en el log de texto.
Definition: moAbstract.cpp:114
#define MO_CONFIG_OK
Definition: moConfig.h:43
value type: TXT or LNK
Definition: moParam.h:53
moMathFunction
bool FirstValue()
Selecciona el primer valor del par�metro actual.
Definition: moConfig.cpp:1563
const moText & GetOptionsStr()
Definition: moParam.h:321
moParamDefinitions m_ParamDefinitions
Definition: moConfig.h:160
static moSceneNode * m_pModel
Definition: moConfig.h:568
moTexture * Texture()
Definition: moValue.cpp:501
moVector2d * Vector2d()
Definition: moValue.cpp:375
#define MO_ALPHA
Definition: moTypes.h:444
moText Text(moParamReference p_paramreference)
Acceso r�pido a un valor de texto.
Definition: moConfig.cpp:1070
#define MO_RED
Definition: moTypes.h:441
moText GetTypeStr() const
Definition: moParam.cpp:386
moText GetTypeStr() const
Devuelve el tipo en formato texto.
Definition: moValue.cpp:1503