@class NSArray, TSDGPUDataBuffer, NSString, TSDGPUDataBufferAttribute, TSDMetalContext, NSMutableSet; @protocol MTLTexture; @interface TSDGPUParticleSystem : NSObject <TSDMTLParticleSystem> { BOOL *_visibilities; BOOL _isInitialized; BOOL _isDataBufferInitialized; unsigned long long _textureCount; BOOL _hasParticleTexture; NSMutableSet *_attributesInShader; } @property (readonly, nonatomic) unsigned long long particleCount; @property (readonly, nonatomic) unsigned long long visibleParticleCount; @property (readonly, nonatomic) unsigned long long particlesWide; @property (readonly, nonatomic) unsigned long long particlesHigh; @property (readonly, nonatomic) struct CGSize { double width; double height; } particleSize; @property (readonly, nonatomic) struct CGSize { double width; double height; } objectSize; @property (readonly, nonatomic) struct CGSize { double width; double height; } slideSize; @property (readonly, nonatomic) double duration; @property (readonly, nonatomic) unsigned long long direction; @property (readonly, nonatomic) id randomGenerator; @property (readonly, nonatomic) NSArray *dataBufferAttributes; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *positionAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *centerAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *texCoordAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *particleTexCoordAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *colorAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *lifeSpanAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *speedAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *rotationAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *scaleAttribute; @property (readonly, nonatomic) TSDGPUDataBufferAttribute *colorTexCoordAttribute; @property (readonly, nonatomic) TSDGPUDataBuffer *dataBuffer; @property (readonly, nonatomic) BOOL shouldDraw; @property (readonly, nonatomic) TSDMetalContext *metalContext; @property (readonly, nonatomic) id<MTLTexture> vertexColorTexture; @property (readonly, nonatomic) struct CGSize { double width; double height; } vertexTextureSize; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)newDataBufferAttributeWithName:(id)a0; + (id)newParticleSystemWithNumberOfParticles:(unsigned long long)a0 objectSize:(struct CGSize { double x0; double x1; })a1 slideSize:(struct CGSize { double x0; double x1; })a2 duration:(double)a3 direction:(unsigned long long)a4 randomGenerator:(id)a5 shader:(id)a6 metalContext:(id)a7; + (id)newParticleSystemWithParticleSize:(struct CGSize { double x0; double x1; })a0 particleSystemSize:(struct CGSize { double x0; double x1; })a1 objectSize:(struct CGSize { double x0; double x1; })a2 slideSize:(struct CGSize { double x0; double x1; })a3 duration:(double)a4 direction:(unsigned long long)a5 randomGenerator:(id)a6 shader:(id)a7 metalContext:(id)a8; + (unsigned long long)numberOfVerticesPerParticle; + (struct CGSize { double x0; double x1; })p_particleSystemSizeWithRequestedNumber:(unsigned long long)a0 objectSize:(struct CGSize { double x0; double x1; })a1; + (BOOL)shouldDrawInvisibleParticles; + (BOOL)willOverrideColorTexCoords; + (BOOL)willOverrideColors; + (BOOL)willOverrideGeometry; + (BOOL)willOverrideStartingPoints; + (BOOL)willOverrideVisibilities; - (void)dealloc; - (unsigned long long)indexFromPoint:(struct CGPoint { double x0; double x1; })a0; - (void)p_setupParticleDataWithTexture:(id)a0; - (struct { float x0; float x1; })centerAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (struct { float x0; float x1; float x2; float x3; })colorAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (struct { float x0; float x1; })colorTexCoordAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (void)drawMetalWithEncoder:(id)a0; - (struct CGPoint { double x0; double x1; })indexPointFromIndex:(unsigned long long)a0; - (id)initWithParticleSize:(struct CGSize { double x0; double x1; })a0 particleSystemSize:(struct CGSize { double x0; double x1; })a1 objectSize:(struct CGSize { double x0; double x1; })a2 slideSize:(struct CGSize { double x0; double x1; })a3 duration:(double)a4 direction:(unsigned long long)a5 randomGenerator:(id)a6 shader:(id)a7 metalContext:(id)a8; - (struct { float x0; float x1; })lifeSpanAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (struct CGContext { } *)newContextFromTexture:(id)a0; - (void)p_logParticleInformation; - (struct CGSize { double x0; double x1; })p_resizeSystemToFitWithinMaxVerticesWithSystemSize:(struct CGSize { double x0; double x1; })a0; - (void)p_reverseParticleDataDrawOrder; - (void)p_setDataBufferAttribute:(id *)a0 withName:(id)a1 defaultDataType:(long long)a2 normalized:(BOOL)a3 componentCount:(unsigned long long)a4; - (void)p_setupDataBufferWithParticleCount:(unsigned long long)a0 visibleParticleCount:(unsigned long long)a1; - (void)p_setupParticleSystemWithParticleSize:(struct CGSize { double x0; double x1; })a0 particleSystemSize:(struct CGSize { double x0; double x1; })a1 objectSize:(struct CGSize { double x0; double x1; })a2 slideSize:(struct CGSize { double x0; double x1; })a3 duration:(double)a4 direction:(unsigned long long)a5 randomGenerator:(id)a6; - (void)p_setupParticleTextureDataWithTexture:(id)a0 capabilities:(id)a1; - (void)p_setupVertexData; - (struct { float x0; float x1; float x2; })rotationAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (double)rotationMax; - (double)scaleAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (void)setupMetalWithShader:(id)a0; - (void)setupWithTexture:(id)a0 particleTextureSize:(struct CGSize { double x0; double x1; })a1 reverseDrawOrder:(BOOL)a2; - (void)setupWithTexture:(id)a0 particleTextureSize:(struct CGSize { double x0; double x1; })a1 reverseDrawOrder:(BOOL)a2 capabilities:(id)a3; - (struct { float x0; float x1; float x2; })speedAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (double)speedMax; - (struct CGPoint { double x0; double x1; })startingPointAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; - (struct { float x0; float x1; })vertexPositionAtVertexIndex:(unsigned long long)a0 particleIndexPoint:(struct CGPoint { double x0; double x1; })a1; - (BOOL)visibilityAtIndexPoint:(struct CGPoint { double x0; double x1; })a0; @end