10#if MA_INCLUDE_OVERLAY_ParticleSystem
15#pragma mark - MAParticleOverlayType
19typedef NS_ENUM(NSInteger, MAParticleOverlayType)
21 MAParticleOverlayTypeSunny = 1,
22 MAParticleOverlayTypeRain,
23 MAParticleOverlayTypeSnowy,
24 MAParticleOverlayTypeHaze,
27#pragma mark - MAParticleVelocityGenerate
31@protocol MAParticleVelocityGenerate <NSObject>
47#pragma mark - MAParticleRandomVelocityGenerate
51@interface MAParticleRandomVelocityGenerate : NSObject <MAParticleVelocityGenerate>
71- (instancetype)initWithBoundaryValueX1:(
float)x1 Y1:(
float)y1 Z1:(
float)z1 X2:(
float)x2 Y2:(
float)y2 Z2:(
float)z2;
75#pragma mark - MAParticleColorGenerate
79@protocol MAParticleColorGenerate <NSObject>
86#pragma mark - MAParticleRandomColorGenerate
90@interface MAParticleRandomColorGenerate : NSObject <MAParticleColorGenerate>
114- (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;
118#pragma mark - MAParticleRotationGenerate
122@protocol MAParticleRotationGenerate <NSObject>
129#pragma mark - MAParticleConstantRotationGenerate
133@interface MAParticleConstantRotationGenerate : NSObject <MAParticleRotationGenerate>
143- (instancetype)initWithRotate:(
float)rotate;
147#pragma mark - MAParticleSizeGenerate
151@protocol MAParticleSizeGenerate <NSObject>
156- (float)getSizeX:(
float)timeFrame;
160- (float)getSizeY:(
float)timeFrame;
164- (float)getSizeZ:(
float)timeFrame;
167#pragma mark - MAParticleCurveSizeGenerate
171@interface MAParticleCurveSizeGenerate : NSObject <MAParticleSizeGenerate>
185- (instancetype)initWithCurveX:(
float)x Y:(
float)y Z:(
float)z;
189#pragma mark - MAParticleEmissionModuleOC
193@interface MAParticleEmissionModuleOC : NSObject
205- (instancetype)initWithEmissionRate:(
int)rate rateTime:(
int)rateTime;
209#pragma mark - MAParticleShapeModule
213@protocol MAParticleShapeModule <NSObject>
222- (BOOL)isRatioEnable;
225#pragma mark - MAParticleSinglePointShapeModule
229@interface MAParticleSinglePointShapeModule : NSObject <MAParticleShapeModule>
245- (instancetype)initWithShapeX:(
float)x Y:(
float)y Z:(
float)z useRatio:(BOOL)isUseRatio;
249#pragma mark - MAParticleRectShapeModule
253@interface MAParticleRectShapeModule : NSObject <MAParticleShapeModule>
271- (instancetype)initWithLeft:(
float)left top:(
float)top right:(
float)right bottom:(
float)bottom useRatio:(BOOL)isUseRatio;
275#pragma mark - MAParticleOverLifeModuleOC
279@interface MAParticleOverLifeModuleOC : NSObject
287- (void)setVelocityOverLife:(
id<MAParticleVelocityGenerate>)velocity;
295- (void)setRotationOverLife:(
id<MAParticleRotationGenerate>)rotation;
303- (void)setSizeOverLife:(
id<MAParticleSizeGenerate>)size;
311- (void)setColorOverLife:(
id<MAParticleColorGenerate>)color;
315#pragma mark - MAParticleOverlayOptions
319@interface MAParticleOverlayOptions : NSObject
323@property (nonatomic, assign) BOOL visibile;
327@property (nonatomic, assign) NSTimeInterval duration;
331@property (nonatomic, assign) BOOL loop;
335@property (nonatomic, assign) NSInteger maxParticles;
339@property (nonatomic, strong) UIImage *icon;
343@property (nonatomic, assign) CGSize startParticleSize;
347@property (nonatomic, assign) NSTimeInterval particleLifeTime;
351@property (nonatomic, strong) id<MAParticleColorGenerate> particleStartColor;
355@property (nonatomic, strong) id<MAParticleVelocityGenerate> particleStartSpeed;
359@property (nonatomic, strong) MAParticleEmissionModuleOC *particleEmissionModule;
363@property (nonatomic, strong) id<MAParticleShapeModule> particleShapeModule;
367@property (nonatomic, strong) MAParticleOverLifeModuleOC *particleOverLifeModule;
371#pragma mark - MAParticleOverlayOptionsFactory
375@interface MAParticleOverlayOptionsFactory : NSObject
385+ (NSArray<MAParticleOverlayOptions *> *)particleOverlayOptionsWithType:(MAParticleOverlayType)particleType;