objc2_sprite_kit/generated/
SKEmitterNode.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-app-kit")]
7#[cfg(target_os = "macos")]
8use objc2_app_kit::*;
9#[cfg(feature = "objc2-core-foundation")]
10use objc2_core_foundation::*;
11use objc2_foundation::*;
12
13use crate::*;
14
15/// [Apple's documentation](https://developer.apple.com/documentation/spritekit/skparticlerenderorder?language=objc)
16// NS_ENUM
17#[repr(transparent)]
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
19pub struct SKParticleRenderOrder(pub NSUInteger);
20impl SKParticleRenderOrder {
21    #[doc(alias = "SKParticleRenderOrderOldestLast")]
22    pub const OldestLast: Self = Self(0);
23    #[doc(alias = "SKParticleRenderOrderOldestFirst")]
24    pub const OldestFirst: Self = Self(1);
25    #[doc(alias = "SKParticleRenderOrderDontCare")]
26    pub const DontCare: Self = Self(2);
27}
28
29unsafe impl Encode for SKParticleRenderOrder {
30    const ENCODING: Encoding = NSUInteger::ENCODING;
31}
32
33unsafe impl RefEncode for SKParticleRenderOrder {
34    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
35}
36
37extern_class!(
38    /// An emitter of particle sprites.
39    ///
40    /// See also [Apple's documentation](https://developer.apple.com/documentation/spritekit/skemitternode?language=objc)
41    #[unsafe(super(SKNode, NSResponder, NSObject))]
42    #[derive(Debug, PartialEq, Eq, Hash)]
43    #[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
44    #[cfg(target_os = "macos")]
45    pub struct SKEmitterNode;
46);
47
48#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
49#[cfg(target_os = "macos")]
50unsafe impl NSCoding for SKEmitterNode {}
51
52#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
53#[cfg(target_os = "macos")]
54unsafe impl NSCopying for SKEmitterNode {}
55
56#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
57#[cfg(target_os = "macos")]
58unsafe impl CopyingHelper for SKEmitterNode {
59    type Result = Self;
60}
61
62#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
63#[cfg(target_os = "macos")]
64unsafe impl NSObjectProtocol for SKEmitterNode {}
65
66#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
67#[cfg(target_os = "macos")]
68unsafe impl NSSecureCoding for SKEmitterNode {}
69
70#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
71#[cfg(target_os = "macos")]
72impl SKEmitterNode {
73    extern_methods!(
74        /// The particle simulation is stepped automatically each frame when present in the scene. This allows the user to manually advance the simulation by a fixed amount of time. Useful for pre-populating particles before adding them to the scene.
75        #[unsafe(method(advanceSimulationTime:))]
76        #[unsafe(method_family = none)]
77        pub unsafe fn advanceSimulationTime(&self, sec: NSTimeInterval);
78
79        #[unsafe(method(resetSimulation))]
80        #[unsafe(method_family = none)]
81        pub unsafe fn resetSimulation(&self);
82
83        #[cfg(feature = "SKTexture")]
84        /// The texture to be used for the particles.
85        #[unsafe(method(particleTexture))]
86        #[unsafe(method_family = none)]
87        pub unsafe fn particleTexture(&self) -> Option<Retained<SKTexture>>;
88
89        #[cfg(feature = "SKTexture")]
90        /// Setter for [`particleTexture`][Self::particleTexture].
91        #[unsafe(method(setParticleTexture:))]
92        #[unsafe(method_family = none)]
93        pub unsafe fn setParticleTexture(&self, particle_texture: Option<&SKTexture>);
94
95        /// The blend mode for each particle. Defaults to SKBlendModeAlpha.
96        #[unsafe(method(particleBlendMode))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn particleBlendMode(&self) -> SKBlendMode;
99
100        /// Setter for [`particleBlendMode`][Self::particleBlendMode].
101        #[unsafe(method(setParticleBlendMode:))]
102        #[unsafe(method_family = none)]
103        pub unsafe fn setParticleBlendMode(&self, particle_blend_mode: SKBlendMode);
104
105        /// The starting color for each particle. Defaults to clear.
106        #[unsafe(method(particleColor))]
107        #[unsafe(method_family = none)]
108        pub unsafe fn particleColor(&self) -> Retained<NSColor>;
109
110        /// Setter for [`particleColor`][Self::particleColor].
111        #[unsafe(method(setParticleColor:))]
112        #[unsafe(method_family = none)]
113        pub unsafe fn setParticleColor(&self, particle_color: &NSColor);
114
115        #[cfg(feature = "objc2-core-foundation")]
116        /// The random variance about each color component for each particle. Defaults to 0.0.
117        #[unsafe(method(particleColorRedRange))]
118        #[unsafe(method_family = none)]
119        pub unsafe fn particleColorRedRange(&self) -> CGFloat;
120
121        #[cfg(feature = "objc2-core-foundation")]
122        /// Setter for [`particleColorRedRange`][Self::particleColorRedRange].
123        #[unsafe(method(setParticleColorRedRange:))]
124        #[unsafe(method_family = none)]
125        pub unsafe fn setParticleColorRedRange(&self, particle_color_red_range: CGFloat);
126
127        #[cfg(feature = "objc2-core-foundation")]
128        #[unsafe(method(particleColorGreenRange))]
129        #[unsafe(method_family = none)]
130        pub unsafe fn particleColorGreenRange(&self) -> CGFloat;
131
132        #[cfg(feature = "objc2-core-foundation")]
133        /// Setter for [`particleColorGreenRange`][Self::particleColorGreenRange].
134        #[unsafe(method(setParticleColorGreenRange:))]
135        #[unsafe(method_family = none)]
136        pub unsafe fn setParticleColorGreenRange(&self, particle_color_green_range: CGFloat);
137
138        #[cfg(feature = "objc2-core-foundation")]
139        #[unsafe(method(particleColorBlueRange))]
140        #[unsafe(method_family = none)]
141        pub unsafe fn particleColorBlueRange(&self) -> CGFloat;
142
143        #[cfg(feature = "objc2-core-foundation")]
144        /// Setter for [`particleColorBlueRange`][Self::particleColorBlueRange].
145        #[unsafe(method(setParticleColorBlueRange:))]
146        #[unsafe(method_family = none)]
147        pub unsafe fn setParticleColorBlueRange(&self, particle_color_blue_range: CGFloat);
148
149        #[cfg(feature = "objc2-core-foundation")]
150        #[unsafe(method(particleColorAlphaRange))]
151        #[unsafe(method_family = none)]
152        pub unsafe fn particleColorAlphaRange(&self) -> CGFloat;
153
154        #[cfg(feature = "objc2-core-foundation")]
155        /// Setter for [`particleColorAlphaRange`][Self::particleColorAlphaRange].
156        #[unsafe(method(setParticleColorAlphaRange:))]
157        #[unsafe(method_family = none)]
158        pub unsafe fn setParticleColorAlphaRange(&self, particle_color_alpha_range: CGFloat);
159
160        #[cfg(feature = "objc2-core-foundation")]
161        /// The rate at which to modify each color component for each particle (per second).
162        #[unsafe(method(particleColorRedSpeed))]
163        #[unsafe(method_family = none)]
164        pub unsafe fn particleColorRedSpeed(&self) -> CGFloat;
165
166        #[cfg(feature = "objc2-core-foundation")]
167        /// Setter for [`particleColorRedSpeed`][Self::particleColorRedSpeed].
168        #[unsafe(method(setParticleColorRedSpeed:))]
169        #[unsafe(method_family = none)]
170        pub unsafe fn setParticleColorRedSpeed(&self, particle_color_red_speed: CGFloat);
171
172        #[cfg(feature = "objc2-core-foundation")]
173        #[unsafe(method(particleColorGreenSpeed))]
174        #[unsafe(method_family = none)]
175        pub unsafe fn particleColorGreenSpeed(&self) -> CGFloat;
176
177        #[cfg(feature = "objc2-core-foundation")]
178        /// Setter for [`particleColorGreenSpeed`][Self::particleColorGreenSpeed].
179        #[unsafe(method(setParticleColorGreenSpeed:))]
180        #[unsafe(method_family = none)]
181        pub unsafe fn setParticleColorGreenSpeed(&self, particle_color_green_speed: CGFloat);
182
183        #[cfg(feature = "objc2-core-foundation")]
184        #[unsafe(method(particleColorBlueSpeed))]
185        #[unsafe(method_family = none)]
186        pub unsafe fn particleColorBlueSpeed(&self) -> CGFloat;
187
188        #[cfg(feature = "objc2-core-foundation")]
189        /// Setter for [`particleColorBlueSpeed`][Self::particleColorBlueSpeed].
190        #[unsafe(method(setParticleColorBlueSpeed:))]
191        #[unsafe(method_family = none)]
192        pub unsafe fn setParticleColorBlueSpeed(&self, particle_color_blue_speed: CGFloat);
193
194        #[cfg(feature = "objc2-core-foundation")]
195        #[unsafe(method(particleColorAlphaSpeed))]
196        #[unsafe(method_family = none)]
197        pub unsafe fn particleColorAlphaSpeed(&self) -> CGFloat;
198
199        #[cfg(feature = "objc2-core-foundation")]
200        /// Setter for [`particleColorAlphaSpeed`][Self::particleColorAlphaSpeed].
201        #[unsafe(method(setParticleColorAlphaSpeed:))]
202        #[unsafe(method_family = none)]
203        pub unsafe fn setParticleColorAlphaSpeed(&self, particle_color_alpha_speed: CGFloat);
204
205        #[cfg(feature = "SKKeyframeSequence")]
206        #[unsafe(method(particleColorSequence))]
207        #[unsafe(method_family = none)]
208        pub unsafe fn particleColorSequence(&self) -> Option<Retained<SKKeyframeSequence>>;
209
210        #[cfg(feature = "SKKeyframeSequence")]
211        /// Setter for [`particleColorSequence`][Self::particleColorSequence].
212        #[unsafe(method(setParticleColorSequence:))]
213        #[unsafe(method_family = none)]
214        pub unsafe fn setParticleColorSequence(
215            &self,
216            particle_color_sequence: Option<&SKKeyframeSequence>,
217        );
218
219        #[cfg(feature = "objc2-core-foundation")]
220        /// The starting color blend for each particle. Behaves the same as SKSpriteNode. Defaults to 0.0.
221        #[unsafe(method(particleColorBlendFactor))]
222        #[unsafe(method_family = none)]
223        pub unsafe fn particleColorBlendFactor(&self) -> CGFloat;
224
225        #[cfg(feature = "objc2-core-foundation")]
226        /// Setter for [`particleColorBlendFactor`][Self::particleColorBlendFactor].
227        #[unsafe(method(setParticleColorBlendFactor:))]
228        #[unsafe(method_family = none)]
229        pub unsafe fn setParticleColorBlendFactor(&self, particle_color_blend_factor: CGFloat);
230
231        #[cfg(feature = "objc2-core-foundation")]
232        /// The random variance about the starting color blend for each particle. Defaults to 0.0.
233        #[unsafe(method(particleColorBlendFactorRange))]
234        #[unsafe(method_family = none)]
235        pub unsafe fn particleColorBlendFactorRange(&self) -> CGFloat;
236
237        #[cfg(feature = "objc2-core-foundation")]
238        /// Setter for [`particleColorBlendFactorRange`][Self::particleColorBlendFactorRange].
239        #[unsafe(method(setParticleColorBlendFactorRange:))]
240        #[unsafe(method_family = none)]
241        pub unsafe fn setParticleColorBlendFactorRange(
242            &self,
243            particle_color_blend_factor_range: CGFloat,
244        );
245
246        #[cfg(feature = "objc2-core-foundation")]
247        /// The rate at which to modify the color blend for each particle. Defaults to 0.0.
248        #[unsafe(method(particleColorBlendFactorSpeed))]
249        #[unsafe(method_family = none)]
250        pub unsafe fn particleColorBlendFactorSpeed(&self) -> CGFloat;
251
252        #[cfg(feature = "objc2-core-foundation")]
253        /// Setter for [`particleColorBlendFactorSpeed`][Self::particleColorBlendFactorSpeed].
254        #[unsafe(method(setParticleColorBlendFactorSpeed:))]
255        #[unsafe(method_family = none)]
256        pub unsafe fn setParticleColorBlendFactorSpeed(
257            &self,
258            particle_color_blend_factor_speed: CGFloat,
259        );
260
261        #[cfg(feature = "SKKeyframeSequence")]
262        #[unsafe(method(particleColorBlendFactorSequence))]
263        #[unsafe(method_family = none)]
264        pub unsafe fn particleColorBlendFactorSequence(
265            &self,
266        ) -> Option<Retained<SKKeyframeSequence>>;
267
268        #[cfg(feature = "SKKeyframeSequence")]
269        /// Setter for [`particleColorBlendFactorSequence`][Self::particleColorBlendFactorSequence].
270        #[unsafe(method(setParticleColorBlendFactorSequence:))]
271        #[unsafe(method_family = none)]
272        pub unsafe fn setParticleColorBlendFactorSequence(
273            &self,
274            particle_color_blend_factor_sequence: Option<&SKKeyframeSequence>,
275        );
276
277        #[cfg(feature = "objc2-core-foundation")]
278        /// The starting position for each particle in the emitter's coordinate space. Defaults to (0.0, 0,0).
279        #[unsafe(method(particlePosition))]
280        #[unsafe(method_family = none)]
281        pub unsafe fn particlePosition(&self) -> CGPoint;
282
283        #[cfg(feature = "objc2-core-foundation")]
284        /// Setter for [`particlePosition`][Self::particlePosition].
285        #[unsafe(method(setParticlePosition:))]
286        #[unsafe(method_family = none)]
287        pub unsafe fn setParticlePosition(&self, particle_position: CGPoint);
288
289        #[cfg(feature = "objc2-core-foundation")]
290        /// The random variance about the starting position for each particle in the emitter's coordinate space. Defaults to (0.0, 0,0).
291        #[unsafe(method(particlePositionRange))]
292        #[unsafe(method_family = none)]
293        pub unsafe fn particlePositionRange(&self) -> CGVector;
294
295        #[cfg(feature = "objc2-core-foundation")]
296        /// Setter for [`particlePositionRange`][Self::particlePositionRange].
297        #[unsafe(method(setParticlePositionRange:))]
298        #[unsafe(method_family = none)]
299        pub unsafe fn setParticlePositionRange(&self, particle_position_range: CGVector);
300
301        #[cfg(feature = "objc2-core-foundation")]
302        /// The starting speed for each particle along its emission vector. Defaults to 0.0.
303        #[unsafe(method(particleSpeed))]
304        #[unsafe(method_family = none)]
305        pub unsafe fn particleSpeed(&self) -> CGFloat;
306
307        #[cfg(feature = "objc2-core-foundation")]
308        /// Setter for [`particleSpeed`][Self::particleSpeed].
309        #[unsafe(method(setParticleSpeed:))]
310        #[unsafe(method_family = none)]
311        pub unsafe fn setParticleSpeed(&self, particle_speed: CGFloat);
312
313        #[cfg(feature = "objc2-core-foundation")]
314        /// The random variance about the starting speed for each particle along its emission vector. Defaults to 0.0.
315        #[unsafe(method(particleSpeedRange))]
316        #[unsafe(method_family = none)]
317        pub unsafe fn particleSpeedRange(&self) -> CGFloat;
318
319        #[cfg(feature = "objc2-core-foundation")]
320        /// Setter for [`particleSpeedRange`][Self::particleSpeedRange].
321        #[unsafe(method(setParticleSpeedRange:))]
322        #[unsafe(method_family = none)]
323        pub unsafe fn setParticleSpeedRange(&self, particle_speed_range: CGFloat);
324
325        #[cfg(feature = "objc2-core-foundation")]
326        /// The angle at which to emit each new particle, in radians. Defaults to 0.0.
327        #[unsafe(method(emissionAngle))]
328        #[unsafe(method_family = none)]
329        pub unsafe fn emissionAngle(&self) -> CGFloat;
330
331        #[cfg(feature = "objc2-core-foundation")]
332        /// Setter for [`emissionAngle`][Self::emissionAngle].
333        #[unsafe(method(setEmissionAngle:))]
334        #[unsafe(method_family = none)]
335        pub unsafe fn setEmissionAngle(&self, emission_angle: CGFloat);
336
337        #[cfg(feature = "objc2-core-foundation")]
338        /// The random variance about the angle at which to emit each new particle, in radians. Defaults to 0.0.
339        #[unsafe(method(emissionAngleRange))]
340        #[unsafe(method_family = none)]
341        pub unsafe fn emissionAngleRange(&self) -> CGFloat;
342
343        #[cfg(feature = "objc2-core-foundation")]
344        /// Setter for [`emissionAngleRange`][Self::emissionAngleRange].
345        #[unsafe(method(setEmissionAngleRange:))]
346        #[unsafe(method_family = none)]
347        pub unsafe fn setEmissionAngleRange(&self, emission_angle_range: CGFloat);
348
349        #[cfg(feature = "objc2-core-foundation")]
350        /// The acceleration to apply to each particles velocity. Useful for simulating effects such as wind or gravity. Defaults to 0.0.
351        #[unsafe(method(xAcceleration))]
352        #[unsafe(method_family = none)]
353        pub unsafe fn xAcceleration(&self) -> CGFloat;
354
355        #[cfg(feature = "objc2-core-foundation")]
356        /// Setter for [`xAcceleration`][Self::xAcceleration].
357        #[unsafe(method(setXAcceleration:))]
358        #[unsafe(method_family = none)]
359        pub unsafe fn setXAcceleration(&self, x_acceleration: CGFloat);
360
361        #[cfg(feature = "objc2-core-foundation")]
362        #[unsafe(method(yAcceleration))]
363        #[unsafe(method_family = none)]
364        pub unsafe fn yAcceleration(&self) -> CGFloat;
365
366        #[cfg(feature = "objc2-core-foundation")]
367        /// Setter for [`yAcceleration`][Self::yAcceleration].
368        #[unsafe(method(setYAcceleration:))]
369        #[unsafe(method_family = none)]
370        pub unsafe fn setYAcceleration(&self, y_acceleration: CGFloat);
371
372        #[cfg(feature = "objc2-core-foundation")]
373        /// The rate at which new particles are generated, in particles per second. Defaults to 0.0.
374        #[unsafe(method(particleBirthRate))]
375        #[unsafe(method_family = none)]
376        pub unsafe fn particleBirthRate(&self) -> CGFloat;
377
378        #[cfg(feature = "objc2-core-foundation")]
379        /// Setter for [`particleBirthRate`][Self::particleBirthRate].
380        #[unsafe(method(setParticleBirthRate:))]
381        #[unsafe(method_family = none)]
382        pub unsafe fn setParticleBirthRate(&self, particle_birth_rate: CGFloat);
383
384        /// The number of particles that will be emitted. If set to 0, there is no limit. Defaults to 0.
385        #[unsafe(method(numParticlesToEmit))]
386        #[unsafe(method_family = none)]
387        pub unsafe fn numParticlesToEmit(&self) -> NSUInteger;
388
389        /// Setter for [`numParticlesToEmit`][Self::numParticlesToEmit].
390        #[unsafe(method(setNumParticlesToEmit:))]
391        #[unsafe(method_family = none)]
392        pub unsafe fn setNumParticlesToEmit(&self, num_particles_to_emit: NSUInteger);
393
394        #[cfg(feature = "objc2-core-foundation")]
395        /// The lifetime of each particle, in seconds. Defaults to 0.0.
396        #[unsafe(method(particleLifetime))]
397        #[unsafe(method_family = none)]
398        pub unsafe fn particleLifetime(&self) -> CGFloat;
399
400        #[cfg(feature = "objc2-core-foundation")]
401        /// Setter for [`particleLifetime`][Self::particleLifetime].
402        #[unsafe(method(setParticleLifetime:))]
403        #[unsafe(method_family = none)]
404        pub unsafe fn setParticleLifetime(&self, particle_lifetime: CGFloat);
405
406        #[cfg(feature = "objc2-core-foundation")]
407        /// The random variance about the lifetime of each particle, in seconds. Defaults to 0.0.
408        #[unsafe(method(particleLifetimeRange))]
409        #[unsafe(method_family = none)]
410        pub unsafe fn particleLifetimeRange(&self) -> CGFloat;
411
412        #[cfg(feature = "objc2-core-foundation")]
413        /// Setter for [`particleLifetimeRange`][Self::particleLifetimeRange].
414        #[unsafe(method(setParticleLifetimeRange:))]
415        #[unsafe(method_family = none)]
416        pub unsafe fn setParticleLifetimeRange(&self, particle_lifetime_range: CGFloat);
417
418        #[cfg(feature = "objc2-core-foundation")]
419        /// The starting z-rotation for each particle. Defaults to 0.0.
420        #[unsafe(method(particleRotation))]
421        #[unsafe(method_family = none)]
422        pub unsafe fn particleRotation(&self) -> CGFloat;
423
424        #[cfg(feature = "objc2-core-foundation")]
425        /// Setter for [`particleRotation`][Self::particleRotation].
426        #[unsafe(method(setParticleRotation:))]
427        #[unsafe(method_family = none)]
428        pub unsafe fn setParticleRotation(&self, particle_rotation: CGFloat);
429
430        #[cfg(feature = "objc2-core-foundation")]
431        /// The random variance about the starting z-rotation for each particle. Defaults to 0.0.
432        #[unsafe(method(particleRotationRange))]
433        #[unsafe(method_family = none)]
434        pub unsafe fn particleRotationRange(&self) -> CGFloat;
435
436        #[cfg(feature = "objc2-core-foundation")]
437        /// Setter for [`particleRotationRange`][Self::particleRotationRange].
438        #[unsafe(method(setParticleRotationRange:))]
439        #[unsafe(method_family = none)]
440        pub unsafe fn setParticleRotationRange(&self, particle_rotation_range: CGFloat);
441
442        #[cfg(feature = "objc2-core-foundation")]
443        /// The rate at which to modify the z-rotation for each particle. Defaults to 0.0.
444        #[unsafe(method(particleRotationSpeed))]
445        #[unsafe(method_family = none)]
446        pub unsafe fn particleRotationSpeed(&self) -> CGFloat;
447
448        #[cfg(feature = "objc2-core-foundation")]
449        /// Setter for [`particleRotationSpeed`][Self::particleRotationSpeed].
450        #[unsafe(method(setParticleRotationSpeed:))]
451        #[unsafe(method_family = none)]
452        pub unsafe fn setParticleRotationSpeed(&self, particle_rotation_speed: CGFloat);
453
454        #[cfg(feature = "objc2-core-foundation")]
455        /// The starting size for each particle. If set to CGSizeZero (the default) the particles will start at the size of the texture assigned to particleTexture. Note that particleScale and particleScaleRange will also have an effect on the effective size of each new particle.
456        #[unsafe(method(particleSize))]
457        #[unsafe(method_family = none)]
458        pub unsafe fn particleSize(&self) -> CGSize;
459
460        #[cfg(feature = "objc2-core-foundation")]
461        /// Setter for [`particleSize`][Self::particleSize].
462        #[unsafe(method(setParticleSize:))]
463        #[unsafe(method_family = none)]
464        pub unsafe fn setParticleSize(&self, particle_size: CGSize);
465
466        #[cfg(feature = "objc2-core-foundation")]
467        /// The starting scale for each particle. Defaults to 1.0.
468        #[unsafe(method(particleScale))]
469        #[unsafe(method_family = none)]
470        pub unsafe fn particleScale(&self) -> CGFloat;
471
472        #[cfg(feature = "objc2-core-foundation")]
473        /// Setter for [`particleScale`][Self::particleScale].
474        #[unsafe(method(setParticleScale:))]
475        #[unsafe(method_family = none)]
476        pub unsafe fn setParticleScale(&self, particle_scale: CGFloat);
477
478        #[cfg(feature = "objc2-core-foundation")]
479        /// The random variance about the starting scale for each particle. Defaults to 0.0.
480        #[unsafe(method(particleScaleRange))]
481        #[unsafe(method_family = none)]
482        pub unsafe fn particleScaleRange(&self) -> CGFloat;
483
484        #[cfg(feature = "objc2-core-foundation")]
485        /// Setter for [`particleScaleRange`][Self::particleScaleRange].
486        #[unsafe(method(setParticleScaleRange:))]
487        #[unsafe(method_family = none)]
488        pub unsafe fn setParticleScaleRange(&self, particle_scale_range: CGFloat);
489
490        #[cfg(feature = "objc2-core-foundation")]
491        /// The rate at which to modify the scale for each particle. Defaults to 0.0.
492        #[unsafe(method(particleScaleSpeed))]
493        #[unsafe(method_family = none)]
494        pub unsafe fn particleScaleSpeed(&self) -> CGFloat;
495
496        #[cfg(feature = "objc2-core-foundation")]
497        /// Setter for [`particleScaleSpeed`][Self::particleScaleSpeed].
498        #[unsafe(method(setParticleScaleSpeed:))]
499        #[unsafe(method_family = none)]
500        pub unsafe fn setParticleScaleSpeed(&self, particle_scale_speed: CGFloat);
501
502        #[cfg(feature = "SKKeyframeSequence")]
503        #[unsafe(method(particleScaleSequence))]
504        #[unsafe(method_family = none)]
505        pub unsafe fn particleScaleSequence(&self) -> Option<Retained<SKKeyframeSequence>>;
506
507        #[cfg(feature = "SKKeyframeSequence")]
508        /// Setter for [`particleScaleSequence`][Self::particleScaleSequence].
509        #[unsafe(method(setParticleScaleSequence:))]
510        #[unsafe(method_family = none)]
511        pub unsafe fn setParticleScaleSequence(
512            &self,
513            particle_scale_sequence: Option<&SKKeyframeSequence>,
514        );
515
516        #[cfg(feature = "objc2-core-foundation")]
517        /// The starting alpha for each particle. Defaults to 1.0.
518        #[unsafe(method(particleAlpha))]
519        #[unsafe(method_family = none)]
520        pub unsafe fn particleAlpha(&self) -> CGFloat;
521
522        #[cfg(feature = "objc2-core-foundation")]
523        /// Setter for [`particleAlpha`][Self::particleAlpha].
524        #[unsafe(method(setParticleAlpha:))]
525        #[unsafe(method_family = none)]
526        pub unsafe fn setParticleAlpha(&self, particle_alpha: CGFloat);
527
528        #[cfg(feature = "objc2-core-foundation")]
529        /// The random variance about the starting alpha for each particle. Defaults to 1.0.
530        #[unsafe(method(particleAlphaRange))]
531        #[unsafe(method_family = none)]
532        pub unsafe fn particleAlphaRange(&self) -> CGFloat;
533
534        #[cfg(feature = "objc2-core-foundation")]
535        /// Setter for [`particleAlphaRange`][Self::particleAlphaRange].
536        #[unsafe(method(setParticleAlphaRange:))]
537        #[unsafe(method_family = none)]
538        pub unsafe fn setParticleAlphaRange(&self, particle_alpha_range: CGFloat);
539
540        #[cfg(feature = "objc2-core-foundation")]
541        /// The rate at which to modify the alpha for each particle. Defaults to 1.0.
542        #[unsafe(method(particleAlphaSpeed))]
543        #[unsafe(method_family = none)]
544        pub unsafe fn particleAlphaSpeed(&self) -> CGFloat;
545
546        #[cfg(feature = "objc2-core-foundation")]
547        /// Setter for [`particleAlphaSpeed`][Self::particleAlphaSpeed].
548        #[unsafe(method(setParticleAlphaSpeed:))]
549        #[unsafe(method_family = none)]
550        pub unsafe fn setParticleAlphaSpeed(&self, particle_alpha_speed: CGFloat);
551
552        #[cfg(feature = "SKKeyframeSequence")]
553        #[unsafe(method(particleAlphaSequence))]
554        #[unsafe(method_family = none)]
555        pub unsafe fn particleAlphaSequence(&self) -> Option<Retained<SKKeyframeSequence>>;
556
557        #[cfg(feature = "SKKeyframeSequence")]
558        /// Setter for [`particleAlphaSequence`][Self::particleAlphaSequence].
559        #[unsafe(method(setParticleAlphaSequence:))]
560        #[unsafe(method_family = none)]
561        pub unsafe fn setParticleAlphaSequence(
562            &self,
563            particle_alpha_sequence: Option<&SKKeyframeSequence>,
564        );
565
566        #[cfg(feature = "SKAction")]
567        /// Specifies an action executed by new particles.
568        #[unsafe(method(particleAction))]
569        #[unsafe(method_family = none)]
570        pub unsafe fn particleAction(&self) -> Option<Retained<SKAction>>;
571
572        #[cfg(feature = "SKAction")]
573        /// Setter for [`particleAction`][Self::particleAction].
574        #[unsafe(method(setParticleAction:))]
575        #[unsafe(method_family = none)]
576        pub unsafe fn setParticleAction(&self, particle_action: Option<&SKAction>);
577
578        /// Defines what logical 'categories' of fields this particles emitted respond to. Defaults to all bits set (all categories).
579        /// Can be forced off via affectedByGravity.
580        #[unsafe(method(fieldBitMask))]
581        #[unsafe(method_family = none)]
582        pub unsafe fn fieldBitMask(&self) -> u32;
583
584        /// Setter for [`fieldBitMask`][Self::fieldBitMask].
585        #[unsafe(method(setFieldBitMask:))]
586        #[unsafe(method_family = none)]
587        pub unsafe fn setFieldBitMask(&self, field_bit_mask: u32);
588
589        /// Normally the particles are rendered as if they were a child of the SKEmitterNode, they can also be rendered as if they were a child of any other node in the scene by setting the targetNode property. Defaults to nil (standard behavior).
590        #[unsafe(method(targetNode))]
591        #[unsafe(method_family = none)]
592        pub unsafe fn targetNode(&self) -> Option<Retained<SKNode>>;
593
594        /// This is a [weak property][objc2::topics::weak_property].
595        /// Setter for [`targetNode`][Self::targetNode].
596        #[unsafe(method(setTargetNode:))]
597        #[unsafe(method_family = none)]
598        pub unsafe fn setTargetNode(&self, target_node: Option<&SKNode>);
599
600        #[cfg(feature = "SKShader")]
601        #[unsafe(method(shader))]
602        #[unsafe(method_family = none)]
603        pub unsafe fn shader(&self) -> Option<Retained<SKShader>>;
604
605        #[cfg(feature = "SKShader")]
606        /// Setter for [`shader`][Self::shader].
607        #[unsafe(method(setShader:))]
608        #[unsafe(method_family = none)]
609        pub unsafe fn setShader(&self, shader: Option<&SKShader>);
610
611        #[cfg(feature = "SKAttribute")]
612        /// Optional dictionary of SKAttributeValues
613        /// Attributes can be used with custom SKShaders.
614        #[unsafe(method(attributeValues))]
615        #[unsafe(method_family = none)]
616        pub unsafe fn attributeValues(&self) -> Retained<NSDictionary<NSString, SKAttributeValue>>;
617
618        #[cfg(feature = "SKAttribute")]
619        /// Setter for [`attributeValues`][Self::attributeValues].
620        #[unsafe(method(setAttributeValues:))]
621        #[unsafe(method_family = none)]
622        pub unsafe fn setAttributeValues(
623            &self,
624            attribute_values: &NSDictionary<NSString, SKAttributeValue>,
625        );
626
627        #[cfg(feature = "SKAttribute")]
628        #[unsafe(method(valueForAttributeNamed:))]
629        #[unsafe(method_family = none)]
630        pub unsafe fn valueForAttributeNamed(
631            &self,
632            key: &NSString,
633        ) -> Option<Retained<SKAttributeValue>>;
634
635        #[cfg(feature = "SKAttribute")]
636        #[unsafe(method(setValue:forAttributeNamed:))]
637        #[unsafe(method_family = none)]
638        pub unsafe fn setValue_forAttributeNamed(&self, value: &SKAttributeValue, key: &NSString);
639
640        #[cfg(feature = "objc2-core-foundation")]
641        /// The starting z-position for each particle. Defaults to 0.0.
642        #[unsafe(method(particleZPosition))]
643        #[unsafe(method_family = none)]
644        pub unsafe fn particleZPosition(&self) -> CGFloat;
645
646        #[cfg(feature = "objc2-core-foundation")]
647        /// Setter for [`particleZPosition`][Self::particleZPosition].
648        #[unsafe(method(setParticleZPosition:))]
649        #[unsafe(method_family = none)]
650        pub unsafe fn setParticleZPosition(&self, particle_z_position: CGFloat);
651
652        /// The order in which particles will be rendered. Defaults to SKParticleRenderOrderOldestLast.
653        #[unsafe(method(particleRenderOrder))]
654        #[unsafe(method_family = none)]
655        pub unsafe fn particleRenderOrder(&self) -> SKParticleRenderOrder;
656
657        /// Setter for [`particleRenderOrder`][Self::particleRenderOrder].
658        #[unsafe(method(setParticleRenderOrder:))]
659        #[unsafe(method_family = none)]
660        pub unsafe fn setParticleRenderOrder(&self, particle_render_order: SKParticleRenderOrder);
661
662        #[cfg(feature = "objc2-core-foundation")]
663        /// The random variance about the starting z-position for each particle. Defaults to 0.0.
664        #[deprecated]
665        #[unsafe(method(particleZPositionRange))]
666        #[unsafe(method_family = none)]
667        pub unsafe fn particleZPositionRange(&self) -> CGFloat;
668
669        #[cfg(feature = "objc2-core-foundation")]
670        /// Setter for [`particleZPositionRange`][Self::particleZPositionRange].
671        #[deprecated]
672        #[unsafe(method(setParticleZPositionRange:))]
673        #[unsafe(method_family = none)]
674        pub unsafe fn setParticleZPositionRange(&self, particle_z_position_range: CGFloat);
675
676        #[cfg(feature = "objc2-core-foundation")]
677        /// The rate at which to modify the z-position for each particle. Defaults to 0.0.
678        #[deprecated]
679        #[unsafe(method(particleZPositionSpeed))]
680        #[unsafe(method_family = none)]
681        pub unsafe fn particleZPositionSpeed(&self) -> CGFloat;
682
683        #[cfg(feature = "objc2-core-foundation")]
684        /// Setter for [`particleZPositionSpeed`][Self::particleZPositionSpeed].
685        #[deprecated]
686        #[unsafe(method(setParticleZPositionSpeed:))]
687        #[unsafe(method_family = none)]
688        pub unsafe fn setParticleZPositionSpeed(&self, particle_z_position_speed: CGFloat);
689    );
690}
691
692/// Methods declared on superclass `SKNode`.
693#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
694#[cfg(target_os = "macos")]
695impl SKEmitterNode {
696    extern_methods!(
697        #[unsafe(method(init))]
698        #[unsafe(method_family = init)]
699        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
700
701        /// Support coding and decoding via NSKeyedArchiver.
702        #[unsafe(method(initWithCoder:))]
703        #[unsafe(method_family = init)]
704        pub unsafe fn initWithCoder(
705            this: Allocated<Self>,
706            a_decoder: &NSCoder,
707        ) -> Option<Retained<Self>>;
708
709        #[unsafe(method(node))]
710        #[unsafe(method_family = none)]
711        pub unsafe fn node(mtm: MainThreadMarker) -> Retained<Self>;
712
713        #[unsafe(method(nodeWithFileNamed:))]
714        #[unsafe(method_family = none)]
715        pub unsafe fn nodeWithFileNamed(
716            filename: &NSString,
717            mtm: MainThreadMarker,
718        ) -> Option<Retained<Self>>;
719
720        #[unsafe(method(nodeWithFileNamed:securelyWithClasses:andError:_))]
721        #[unsafe(method_family = none)]
722        pub unsafe fn nodeWithFileNamed_securelyWithClasses_andError(
723            filename: &NSString,
724            classes: &NSSet<AnyClass>,
725            mtm: MainThreadMarker,
726        ) -> Result<Retained<Self>, Retained<NSError>>;
727    );
728}
729
730/// Methods declared on superclass `NSObject`.
731#[cfg(all(feature = "SKNode", feature = "objc2-app-kit"))]
732#[cfg(target_os = "macos")]
733impl SKEmitterNode {
734    extern_methods!(
735        #[unsafe(method(new))]
736        #[unsafe(method_family = new)]
737        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
738    );
739}