ParticleAssetFieldCollection.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) 2013 GarageGames, LLC
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to
  6. // deal in the Software without restriction, including without limitation the
  7. // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  8. // sell copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  19. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  20. // IN THE SOFTWARE.
  21. //-----------------------------------------------------------------------------
  22. #ifndef _PARTICLE_ASSET_FIELD_COLLECTION_H_
  23. #define _PARTICLE_ASSET_FIELD_COLLECTION_H_
  24. #ifndef _PARTICLE_ASSET_FIELD_H_
  25. #include "2d/assets/ParticleAssetField.h"
  26. #endif
  27. #ifndef _HASHTABLE_H_
  28. #include "collection/hashTable.h"
  29. #endif
  30. #ifndef _TAML_CUSTOM_H_
  31. #include "persistence/taml/tamlCustom.h"
  32. #endif
  33. ///-----------------------------------------------------------------------------
  34. class ParticleAssetFieldCollection
  35. {
  36. public:
  37. typedef HashMap<StringTableEntry, ParticleAssetField*> typeFieldHash;
  38. private:
  39. typeFieldHash mFields;
  40. ParticleAssetField* mpSelectedField;
  41. public:
  42. ParticleAssetFieldCollection();
  43. virtual ~ParticleAssetFieldCollection();
  44. void copyTo( ParticleAssetFieldCollection& fieldCollection );
  45. void addField( ParticleAssetField& particleAssetField, const char* pFieldName, F32 maxTime, F32 minValue, F32 maxValue, F32 defaultValue );
  46. ParticleAssetField* selectField( const char* pFieldName );
  47. inline void deselectField( void ) { mpSelectedField = NULL; }
  48. inline const ParticleAssetField* getSelectedField( void ) const { return mpSelectedField; }
  49. inline const typeFieldHash& getFields( void ) const { return mFields; }
  50. ParticleAssetField* findField( const char* pFieldName );
  51. S32 setSingleDataKey( const F32 value );
  52. S32 addDataKey( F32 time, F32 value );
  53. bool removeDataKey( S32 index );
  54. bool clearDataKeys( void );
  55. bool setDataKey( S32 index, F32 value );
  56. F32 getDataKeyValue( S32 index ) const;
  57. F32 getDataKeyTime( S32 index ) const;
  58. const ParticleAssetField::DataKey& getDataKey( const U32 index ) const;
  59. U32 getDataKeyCount( void ) const;
  60. F32 getMinValue( void ) const;
  61. F32 getMaxValue( void ) const;
  62. F32 getMinTime( void ) const;
  63. F32 getMaxTime( void ) const;
  64. F32 getFieldValue( F32 time ) const;
  65. bool setRepeatTime( const F32 repeatTime );
  66. F32 getRepeatTime( void ) const;
  67. bool setValueScale( const F32 valueScale );
  68. F32 getValueScale( void ) const;
  69. void onTamlCustomWrite( TamlCustomNodes& customNodes );
  70. void onTamlCustomRead( const TamlCustomNodes& customNodes );
  71. void WriteCustomTamlSchema( const AbstractClassRep* pClassRep, TiXmlElement* pParentElement ) const;
  72. };
  73. #endif // ParticleAssetFieldCollection