MAParticleOverlayOptions.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. //
  2. // MAParticleOverlayOptions.h
  3. // MAMapKit
  4. //
  5. // Created by liubo on 2018/9/18.
  6. // Copyright © 2018年 Amap. All rights reserved.
  7. //
  8. #import "MAConfig.h"
  9. #if MA_INCLUDE_OVERLAY_ParticleSystem
  10. #import "MAShape.h"
  11. #import "MAOverlay.h"
  12. #pragma mark - MAParticleOverlayType
  13. ///天气类型
  14. typedef NS_ENUM(NSInteger, MAParticleOverlayType)
  15. {
  16. MAParticleOverlayTypeSunny = 1, ///<晴天
  17. MAParticleOverlayTypeRain, ///<雨天
  18. MAParticleOverlayTypeSnowy, ///<雪天
  19. MAParticleOverlayTypeHaze, ///<雾霾
  20. };
  21. #pragma mark - MAParticleVelocityGenerate
  22. ///粒子的速度生成类. since 6.5.0
  23. @protocol MAParticleVelocityGenerate <NSObject>
  24. @required
  25. ///X轴方向上的速度变化率
  26. - (CGFloat)getX;
  27. ///Y轴方向上的速度变化率
  28. - (CGFloat)getY;
  29. ///Z轴方向上的速度变化率
  30. - (CGFloat)getZ;
  31. @end
  32. #pragma mark - MAParticleRandomVelocityGenerate
  33. ///粒子的随机速度生成类. since 6.5.0
  34. @interface MAParticleRandomVelocityGenerate : NSObject <MAParticleVelocityGenerate>
  35. /**
  36. * @brief 根据速度范围值生成粒子的速度变化类
  37. * @param x1 起始的速度x值
  38. * @param y1 起始的速度y值
  39. * @param z1 起始的速度z值
  40. * @param x2 结束的速度x值
  41. * @param y2 结束的速度y值
  42. * @param z2 结束的速度z值
  43. * @return 生成粒子的颜色变化类
  44. */
  45. - (instancetype)initWithBoundaryValueX1:(float)x1 Y1:(float)y1 Z1:(float)z1 X2:(float)x2 Y2:(float)y2 Z2:(float)z2;
  46. @end
  47. #pragma mark - MAParticleColorGenerate
  48. ///粒子的颜色生成类. since 6.5.0
  49. @protocol MAParticleColorGenerate <NSObject>
  50. @required
  51. ///生成的颜色值,需为包含四个float值的数组。
  52. - (float *)getColor;
  53. @end
  54. #pragma mark - MAParticleRandomColorGenerate
  55. ///粒子的随机颜色生成类. since 6.5.0
  56. @interface MAParticleRandomColorGenerate : NSObject <MAParticleColorGenerate>
  57. /**
  58. * @brief 根据颜色范围值生成粒子的颜色变化类
  59. * @param r1 起始的颜色r值
  60. * @param g1 起始的颜色g值
  61. * @param b1 起始的颜色b值
  62. * @param a1 起始的颜色a值
  63. * @param r2 结束的颜色r值
  64. * @param g2 结束的颜色g值
  65. * @param b2 结束的颜色b值
  66. * @param a2 结束的颜色a值
  67. * @return 生成粒子的颜色变化类
  68. */
  69. - (instancetype)initWithBoundaryColorR1:(float)r1 G1:(float)g1 B1:(float)b1 A1:(float)a1 R2:(float)r2 G2:(float)g2 B2:(float)b2 A2:(float)a2;
  70. @end
  71. #pragma mark - MAParticleRotationGenerate
  72. ///粒子的角度生成类. since 6.5.0
  73. @protocol MAParticleRotationGenerate <NSObject>
  74. @required
  75. ///生成的角度值
  76. - (float)getRotate;
  77. @end
  78. #pragma mark - MAParticleConstantRotationGenerate
  79. ///粒子的固定角度生成类. since 6.5.0
  80. @interface MAParticleConstantRotationGenerate : NSObject <MAParticleRotationGenerate>
  81. /**
  82. * @brief 根据角度生成粒子的角度变化类
  83. * @param rotate 固定的角度
  84. * @return 生成粒子的角度变化类
  85. */
  86. - (instancetype)initWithRotate:(float)rotate;
  87. @end
  88. #pragma mark - MAParticleSizeGenerate
  89. ///粒子的大小生成类. since 6.5.0
  90. @protocol MAParticleSizeGenerate <NSObject>
  91. @required
  92. ///X轴上变化比例
  93. - (float)getSizeX:(float)timeFrame;
  94. ///Y轴上变化比例
  95. - (float)getSizeY:(float)timeFrame;
  96. ///Z轴上变化比例
  97. - (float)getSizeZ:(float)timeFrame;
  98. @end
  99. #pragma mark - MAParticleCurveSizeGenerate
  100. ///粒子的大小变化类. since 6.5.0
  101. @interface MAParticleCurveSizeGenerate : NSObject <MAParticleSizeGenerate>
  102. /**
  103. * @brief 根据三个轴上的变化比例生成粒子的大小变化类
  104. * @param x X轴上变化比例
  105. * @param y Y轴上变化比例
  106. * @param z Z轴上变化比例
  107. * @return 生成粒子的大小变化类
  108. */
  109. - (instancetype)initWithCurveX:(float)x Y:(float)y Z:(float)z;
  110. @end
  111. #pragma mark - MAParticleEmissionModule
  112. ///粒子的发射率类,每隔多少时间发射粒子数量,越多会越密集. since 6.5.0
  113. @interface MAParticleEmissionModule : NSObject
  114. /**
  115. * @brief 根据发射数量和发射间隔生成粒子的发射率类。关系为:"发射数量为rate粒子->等待rateTime间隔->发射数量为rate粒子->等待rateTime间隔"循环
  116. * @param rate 发射数量(不能为0)
  117. * @param rateTime 发射间隔
  118. * @return 生成粒子的发射率类
  119. */
  120. - (instancetype)initWithEmissionRate:(int)rate rateTime:(int)rateTime;
  121. @end
  122. #pragma mark - MAParticleShapeModule
  123. ///粒子的发射区域模型协议. since 6.5.0
  124. @protocol MAParticleShapeModule <NSObject>
  125. @required
  126. ///新生成的发射点坐标,需为包含三个float值的数组。
  127. - (float *)getPoint;
  128. ///坐标是否按比例生成
  129. - (BOOL)isRatioEnable;
  130. @end
  131. #pragma mark - MAParticleSinglePointShapeModule
  132. ///粒子的发射单个点区域模型. since 6.5.0
  133. @interface MAParticleSinglePointShapeModule : NSObject <MAParticleShapeModule>
  134. /**
  135. * @brief 生成粒子的发射矩形区域模型,以比例的形式设置发射区域
  136. * @param x x坐标比例
  137. * @param y y坐标比例
  138. * @param z z坐标比例
  139. * @param isUseRatio 是否按比例
  140. * @return 新生成的粒子发射单个点区域模型
  141. */
  142. - (instancetype)initWithShapeX:(float)x Y:(float)y Z:(float)z useRatio:(BOOL)isUseRatio;
  143. @end
  144. #pragma mark - MAParticleRectShapeModule
  145. ///粒子的发射矩形区域模型. since 6.5.0
  146. @interface MAParticleRectShapeModule : NSObject <MAParticleShapeModule>
  147. /**
  148. * @brief 生成粒子的发射矩形区域模型,以比例的形式设置发射区域。
  149. * @param left 左边距比例
  150. * @param top 上边距比例
  151. * @param right 右边距比例
  152. * @param bottom 下边距比例
  153. * @param isUseRatio 是否按比例
  154. * @return 新生成的粒子发射矩形区域模型
  155. */
  156. - (instancetype)initWithLeft:(float)left top:(float)top right:(float)right bottom:(float)bottom useRatio:(BOOL)isUseRatio;
  157. @end
  158. #pragma mark - MAParticleOverLifeModule
  159. ///粒子生命周期过程中状态变化,包含速度、旋转和颜色的变化. since 6.5.0
  160. @interface MAParticleOverLifeModule : NSObject
  161. /**
  162. * @brief 设置粒子生命周期过程中速度的变化
  163. * @param velocity 遵循MAParticleVelocityGenerate协议的速度生成类
  164. */
  165. - (void)setVelocityOverLife:(id<MAParticleVelocityGenerate>)velocity;
  166. /**
  167. * @brief 设置粒子生命周期过程中角度的变化
  168. * @param rotation 遵循MAParticleRotationGenerate协议的角度生成类
  169. */
  170. - (void)setRotationOverLife:(id<MAParticleRotationGenerate>)rotation;
  171. /**
  172. * @brief 设置粒子生命周期过程中大小的变化
  173. * @param size 遵循MAParticleSizeGenerate协议的大小生成类
  174. */
  175. - (void)setSizeOverLife:(id<MAParticleSizeGenerate>)size;
  176. /**
  177. * @brief 设置粒子生命周期过程中颜色的变化
  178. * @param color 遵循MAParticleColorGenerate协议的颜色生成类
  179. */
  180. - (void)setColorOverLife:(id<MAParticleColorGenerate>)color;
  181. @end
  182. #pragma mark - MAParticleOverlayOptions
  183. ///该类用于定义一个粒子覆盖物显示选项. since 6.5.0
  184. @interface MAParticleOverlayOptions : NSObject
  185. ///option选项是否可见. (默认YES)
  186. @property (nonatomic, assign) BOOL visibile;
  187. ///粒子系统存活时间. (默认5000,单位毫秒)
  188. @property (nonatomic, assign) NSTimeInterval duration;
  189. ///粒子系统是否循环. (默认YES)
  190. @property (nonatomic, assign) BOOL loop;
  191. ///粒子系统的粒子最大数量. (默认100)
  192. @property (nonatomic, assign) NSInteger maxParticles;
  193. ///粒子系统的粒子图标. (默认nil)
  194. @property (nonatomic, strong) UIImage *icon;
  195. ///每个粒子的初始大小. (默认(32.f*[[UIScreen mainScreen] nativeScale], 32.f*[[UIScreen mainScreen] nativeScale]),单位:OpenGLESPixels数量,计算方式为: OpenGLESPixels = ScreenPoint数量 * [[UIScreen mainScreen] nativeScale])
  196. @property (nonatomic, assign) CGSize startParticleSize;
  197. ///每个粒子的存活时间. (默认5000,单位毫秒)
  198. @property (nonatomic, assign) NSTimeInterval particleLifeTime;
  199. ///每个粒子的初始颜色. (默认nil)
  200. @property (nonatomic, strong) id<MAParticleColorGenerate> particleStartColor;
  201. ///每个粒子的初始速度. (默认nil)
  202. @property (nonatomic, strong) id<MAParticleVelocityGenerate> particleStartSpeed;
  203. ///粒子的发射率,参考 MAParticleEmissionModule 类. (默认nil)
  204. @property (nonatomic, strong) MAParticleEmissionModule *particleEmissionModule;
  205. ///粒子的发射区域模型. (默认nil)
  206. @property (nonatomic, strong) id<MAParticleShapeModule> particleShapeModule;
  207. ///粒子生命周期过程,参考 MAParticleOverLifeModule 类. (默认nil)
  208. @property (nonatomic, strong) MAParticleOverLifeModule *particleOverLifeModule;
  209. @end
  210. #pragma mark - MAParticleOverlayOptionsFactory
  211. ///该类用于根据指定的天气类型,生成SDK内置的天气粒子覆盖物显示选项option. since 6.5.0
  212. @interface MAParticleOverlayOptionsFactory : NSObject
  213. /**
  214. * @brief 根据指定的天气类型生成粒子覆盖物显示选项option
  215. * @param particleType 天气类型
  216. * @return 新生成的粒子覆盖物显示选项option
  217. */
  218. + (NSArray<MAParticleOverlayOptions *> *)particleOverlayOptionsWithType:(MAParticleOverlayType)particleType;
  219. @end
  220. #endif