DataSource.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #ifndef _PARTICLE_DATA_SOURCE_H_
  2. #define _PARTICLE_DATA_SOURCE_H_
  3. #include <string.h>
  4. #include <stdarg.h>
  5. #include <stdio.h>
  6. #include "..\datadesc\data_desc.h"
  7. #include "..\..\icommon\names.h"
  8. #include "..\..\..\common_h\core.h"
  9. #include "..\..\..\common_h\templates.h"
  10. #include "..\..\icommon\types.h"
  11. #include "fieldlist.h"
  12. class TextFile;
  13. class DataObject;
  14. class DataColor;
  15. class DataBool;
  16. class DataFloat;
  17. class DataGraph;
  18. class DataString;
  19. class DataPosition;
  20. class DataUV;
  21. class TextFile;
  22. #ifndef _XBOX
  23. class TiXmlDocument;
  24. class TiXmlElement;
  25. #endif
  26. class MemFile;
  27. class IParticleManager;
  28. //Источник данных для партиклов...
  29. class DataSource
  30. {
  31. public:
  32. //Описание партикла (используеться при создании системы)
  33. struct ParticleDesc
  34. {
  35. ParticleType Type;
  36. FieldList Fields;
  37. ParticleDesc ()
  38. {
  39. Type = UNKNOWN_PARTICLE;
  40. }
  41. /*
  42. protected:
  43. ParticleDesc & operator = (const ParticleDesc & source)
  44. {
  45. return *this;
  46. }
  47. */
  48. };
  49. //Описание эмиттера (используеться при создании системы)
  50. struct EmitterDesc
  51. {
  52. EmitterType Type;
  53. FieldList Fields;
  54. array<ParticleDesc> Particles;
  55. EmitterDesc () : Particles (_FL_, 1)
  56. {
  57. Type = UNKNOWN_EMITTER;
  58. }
  59. };
  60. private:
  61. array<EmitterDesc> Emitters;
  62. //Загрузить точечный эмиттер
  63. void CreatePointEmitter (MemFile* pMemFile);
  64. #ifndef _XBOX
  65. void CreatePointEmitterXML (TiXmlElement* root);
  66. #endif
  67. //Загрузить BillBoard партикл
  68. void CreateBillBoardParticle (array<ParticleDesc> &Particles, MemFile* pMemFile);
  69. //Загрузить Model партикл
  70. void CreateModelParticle (array<ParticleDesc> &Particles, MemFile* pMemFile);
  71. #ifndef _XBOX
  72. //Загрузить BillBoard партикл
  73. void CreateBillBoardParticleXML (array<ParticleDesc> &Particles, TiXmlElement* root);
  74. //Загрузить Model партикл
  75. void CreateModelParticleXML (array<ParticleDesc> &Particles, TiXmlElement* root);
  76. #endif
  77. int FindEmitter (const char* Name);
  78. protected:
  79. virtual ~DataSource ();
  80. public:
  81. FieldList* CreateEmptyPointEmitter (const char* EmitterName);
  82. FieldList* CreateBillBoardParticle (const char* ParticleName, const char* EmitterName);
  83. FieldList* CreateModelParticle (const char* ParticleName, const char* EmitterName);
  84. void DeletePointEmitter (FieldList* pEmitter);
  85. void DeleteBillboard (FieldList* pEmitter, FieldList* pParticles);
  86. void DeleteModel (FieldList* pEmitter, FieldList* pParticles);
  87. void Destroy ();
  88. //---------- Создание/удаление --------------------
  89. DataSource ();
  90. bool Release ();
  91. // ========================= Load & Save =======================================
  92. //Сохранить/восстановить из файла
  93. virtual void Write (MemFile* pMemFile);
  94. #ifndef _XBOX
  95. virtual void WriteXML (TextFile* xmlFile, dword level);
  96. virtual void LoadXML (TiXmlDocument* xmlFile);
  97. #endif
  98. virtual void Load (MemFile* pMemFile);
  99. virtual int GetEmitterCount ();
  100. DataSource::EmitterDesc* GetEmitterDesc (int Index);
  101. void NewForceFieldRegistred();
  102. };
  103. #endif