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