10#if MA_INCLUDE_OVERLAY_ParticleSystem
15#pragma mark - MAParticleOverlayType
18typedef NS_ENUM(NSInteger, MAParticleOverlayType)
20 MAParticleOverlayTypeSunny = 1,
21 MAParticleOverlayTypeRain,
22 MAParticleOverlayTypeSnowy,
23 MAParticleOverlayTypeHaze,
26#pragma mark - MAParticleVelocityGenerate
29@protocol MAParticleVelocityGenerate <NSObject>
42#pragma mark - MAParticleRandomVelocityGenerate
45@interface MAParticleRandomVelocityGenerate : NSObject <MAParticleVelocityGenerate>
57- (instancetype)initWithBoundaryValueX1:(
float)x1 Y1:(
float)y1 Z1:(
float)z1 X2:(
float)x2 Y2:(
float)y2 Z2:(
float)z2;
61#pragma mark - MAParticleColorGenerate
64@protocol MAParticleColorGenerate <NSObject>
70#pragma mark - MAParticleRandomColorGenerate
73@interface MAParticleRandomColorGenerate : NSObject <MAParticleColorGenerate>
87- (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;
91#pragma mark - MAParticleRotationGenerate
94@protocol MAParticleRotationGenerate <NSObject>
100#pragma mark - MAParticleConstantRotationGenerate
103@interface MAParticleConstantRotationGenerate : NSObject <MAParticleRotationGenerate>
110- (instancetype)initWithRotate:(
float)rotate;
114#pragma mark - MAParticleSizeGenerate
117@protocol MAParticleSizeGenerate <NSObject>
121- (float)getSizeX:(
float)timeFrame;
124- (float)getSizeY:(
float)timeFrame;
127- (float)getSizeZ:(
float)timeFrame;
130#pragma mark - MAParticleCurveSizeGenerate
133@interface MAParticleCurveSizeGenerate : NSObject <MAParticleSizeGenerate>
142- (instancetype)initWithCurveX:(
float)x Y:(
float)y Z:(
float)z;
146#pragma mark - MAParticleEmissionModuleOC
149@interface MAParticleEmissionModuleOC : NSObject
157- (instancetype)initWithEmissionRate:(
int)rate rateTime:(
int)rateTime;
161#pragma mark - MAParticleShapeModule
164@protocol MAParticleShapeModule <NSObject>
171- (BOOL)isRatioEnable;
174#pragma mark - MAParticleSinglePointShapeModule
177@interface MAParticleSinglePointShapeModule : NSObject <MAParticleShapeModule>
187- (instancetype)initWithShapeX:(
float)x Y:(
float)y Z:(
float)z useRatio:(BOOL)isUseRatio;
191#pragma mark - MAParticleRectShapeModule
194@interface MAParticleRectShapeModule : NSObject <MAParticleShapeModule>
205- (instancetype)initWithLeft:(
float)left top:(
float)top right:(
float)right bottom:(
float)bottom useRatio:(BOOL)isUseRatio;
209#pragma mark - MAParticleOverLifeModuleOC
212@interface MAParticleOverLifeModuleOC : NSObject
218- (void)setVelocityOverLife:(
id<MAParticleVelocityGenerate>)velocity;
224- (void)setRotationOverLife:(
id<MAParticleRotationGenerate>)rotation;
230- (void)setSizeOverLife:(
id<MAParticleSizeGenerate>)size;
236- (void)setColorOverLife:(
id<MAParticleColorGenerate>)color;
240#pragma mark - MAParticleOverlayOptions
243@interface MAParticleOverlayOptions : NSObject
246@property (nonatomic, assign) BOOL visibile;
249@property (nonatomic, assign) NSTimeInterval duration;
252@property (nonatomic, assign) BOOL loop;
255@property (nonatomic, assign) NSInteger maxParticles;
258@property (nonatomic, strong) UIImage *icon;
261@property (nonatomic, assign) CGSize startParticleSize;
264@property (nonatomic, assign) NSTimeInterval particleLifeTime;
267@property (nonatomic, strong) id<MAParticleColorGenerate> particleStartColor;
270@property (nonatomic, strong) id<MAParticleVelocityGenerate> particleStartSpeed;
273@property (nonatomic, strong) MAParticleEmissionModuleOC *particleEmissionModule;
276@property (nonatomic, strong) id<MAParticleShapeModule> particleShapeModule;
279@property (nonatomic, strong) MAParticleOverLifeModuleOC *particleOverLifeModule;
283#pragma mark - MAParticleOverlayOptionsFactory
286@interface MAParticleOverlayOptionsFactory : NSObject
293+ (NSArray<MAParticleOverlayOptions *> *)particleOverlayOptionsWithType:(MAParticleOverlayType)particleType;