objc2_scene_kit/generated/
SCNParticleSystem.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#[cfg(feature = "objc2-quartz-core")]
13#[cfg(not(target_os = "watchos"))]
14use objc2_quartz_core::*;
15
16use crate::*;
17
18/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleproperty?language=objc)
19// NS_TYPED_ENUM
20pub type SCNParticleProperty = NSString;
21
22extern "C" {
23    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyposition?language=objc)
24    pub static SCNParticlePropertyPosition: &'static SCNParticleProperty;
25}
26
27extern "C" {
28    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyangle?language=objc)
29    pub static SCNParticlePropertyAngle: &'static SCNParticleProperty;
30}
31
32extern "C" {
33    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyrotationaxis?language=objc)
34    pub static SCNParticlePropertyRotationAxis: &'static SCNParticleProperty;
35}
36
37extern "C" {
38    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyvelocity?language=objc)
39    pub static SCNParticlePropertyVelocity: &'static SCNParticleProperty;
40}
41
42extern "C" {
43    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyangularvelocity?language=objc)
44    pub static SCNParticlePropertyAngularVelocity: &'static SCNParticleProperty;
45}
46
47extern "C" {
48    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertylife?language=objc)
49    pub static SCNParticlePropertyLife: &'static SCNParticleProperty;
50}
51
52extern "C" {
53    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertycolor?language=objc)
54    pub static SCNParticlePropertyColor: &'static SCNParticleProperty;
55}
56
57extern "C" {
58    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyopacity?language=objc)
59    pub static SCNParticlePropertyOpacity: &'static SCNParticleProperty;
60}
61
62extern "C" {
63    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertysize?language=objc)
64    pub static SCNParticlePropertySize: &'static SCNParticleProperty;
65}
66
67extern "C" {
68    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyframe?language=objc)
69    pub static SCNParticlePropertyFrame: &'static SCNParticleProperty;
70}
71
72extern "C" {
73    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyframerate?language=objc)
74    pub static SCNParticlePropertyFrameRate: &'static SCNParticleProperty;
75}
76
77extern "C" {
78    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertybounce?language=objc)
79    pub static SCNParticlePropertyBounce: &'static SCNParticleProperty;
80}
81
82extern "C" {
83    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertycharge?language=objc)
84    pub static SCNParticlePropertyCharge: &'static SCNParticleProperty;
85}
86
87extern "C" {
88    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertyfriction?language=objc)
89    pub static SCNParticlePropertyFriction: &'static SCNParticleProperty;
90}
91
92extern "C" {
93    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertycontactpoint?language=objc)
94    pub static SCNParticlePropertyContactPoint: &'static SCNParticleProperty;
95}
96
97extern "C" {
98    /// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertycontactnormal?language=objc)
99    pub static SCNParticlePropertyContactNormal: &'static SCNParticleProperty;
100}
101
102/// Parameter `data`: array of particle properties data stripes, ordered by the given NSArray of properties name in [- handleEvent:forProperties:withBlock:]
103///
104/// Parameter `dataStride`: array of particle properties data stripes stride, with the same ordering than data.
105///
106/// Parameter `indices`: optional array of count indices referencing the particles affected by the event. Only SCNParticleEventDeath and SCNParticleEventCollision provide this array. For SCNParticleEventBirth the indices are implicitely [0,1,2,..,count-1]
107///
108/// Parameter `count`: number of particles affected by the event
109///
110/// This is a small example of usage of an event handling:
111/// [particleSystem handleEvent:SCNParticleEventCollision forProperties:
112/// @
113/// [SCNParticlePropertyAngle, SCNParticlePropertyRotationAxis, SCNParticlePropertyContactNormal] withBlock:^(void **data, size_t *dataStride, uint32_t *indices, NSInteger count) {
114/// for (NSInteger i = 0; i
115/// <
116/// count; ++i) {
117/// // SCNParticlePropertyAngle (float)
118/// float *angle = (float *)((char *)data[0] + dataStride[0] * indices[i]);
119/// // SCNParticlePropertyRotationAxis (float3)
120/// float *axis = (float *)((char *)data[1] + dataStride[1] * indices[i]);
121/// // SCNParticlePropertyContactNormal (float3)
122/// float *colNrm = (float *)((char *)data[2] + dataStride[2] * indices[i]);
123///
124/// // rotate the particle (angle[0] and axis[0..2] based on the collision normal (colNrm[0..2])
125/// // ...
126/// }
127/// }];
128///
129/// See also [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleeventblock?language=objc)
130#[cfg(feature = "block2")]
131pub type SCNParticleEventBlock =
132    *mut block2::DynBlock<dyn Fn(NonNull<NonNull<c_void>>, NonNull<usize>, *mut u32, NSInteger)>;
133
134/// Parameter `data`: array of particle properties data stripes, ordered by the given NSArray of properties name in [- handleEvent:forProperties:withBlock:]
135///
136/// Parameter `dataStride`: array of particle properties data stripes stride, with the same ordering than data.
137///
138/// Parameter `start`: index of the first particle
139///
140/// Parameter `end`: index of the last particle
141///
142/// Parameter `deltaTime`: duration of the simulation step, in seconds.
143///
144/// This is a small example of usage of a modifier block:
145/// [self.particleSystem addModifierForProperties:
146/// @
147/// [SCNParticlePropertyPosition, SCNParticlePropertyVelocity] atStage:SCNParticleModifierStagePreCollision withBlock:^(void **data, size_t *dataStride, NSInteger start, NSInteger end, float deltaTime) {
148/// for (NSInteger i = start; i
149/// <
150/// end; ++i) {
151/// // SCNParticlePropertyPosition (float3)
152/// float *pos = (float *)((char *)data[0] + dataStride[0] * i);
153/// // SCNParticlePropertyVelocity (float3)
154/// float *vel = (float *)((char *)data[1] + dataStride[1] * i);
155///
156/// // change velocity and/or position
157/// // ...
158/// }
159/// }];
160///
161/// See also [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlemodifierblock?language=objc)
162#[cfg(feature = "block2")]
163pub type SCNParticleModifierBlock = *mut block2::DynBlock<
164    dyn Fn(NonNull<NonNull<c_void>>, NonNull<usize>, NSInteger, NSInteger, c_float),
165>;
166
167/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlesortingmode?language=objc)
168// NS_ENUM
169#[repr(transparent)]
170#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
171pub struct SCNParticleSortingMode(pub NSInteger);
172impl SCNParticleSortingMode {
173    #[doc(alias = "SCNParticleSortingModeNone")]
174    pub const None: Self = Self(0);
175    #[doc(alias = "SCNParticleSortingModeProjectedDepth")]
176    pub const ProjectedDepth: Self = Self(1);
177    #[doc(alias = "SCNParticleSortingModeDistance")]
178    pub const Distance: Self = Self(2);
179    #[doc(alias = "SCNParticleSortingModeOldestFirst")]
180    pub const OldestFirst: Self = Self(3);
181    #[doc(alias = "SCNParticleSortingModeYoungestFirst")]
182    pub const YoungestFirst: Self = Self(4);
183}
184
185unsafe impl Encode for SCNParticleSortingMode {
186    const ENCODING: Encoding = NSInteger::ENCODING;
187}
188
189unsafe impl RefEncode for SCNParticleSortingMode {
190    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
191}
192
193/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleblendmode?language=objc)
194// NS_ENUM
195#[repr(transparent)]
196#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
197pub struct SCNParticleBlendMode(pub NSInteger);
198impl SCNParticleBlendMode {
199    #[doc(alias = "SCNParticleBlendModeAdditive")]
200    pub const Additive: Self = Self(0);
201    #[doc(alias = "SCNParticleBlendModeSubtract")]
202    pub const Subtract: Self = Self(1);
203    #[doc(alias = "SCNParticleBlendModeMultiply")]
204    pub const Multiply: Self = Self(2);
205    #[doc(alias = "SCNParticleBlendModeScreen")]
206    pub const Screen: Self = Self(3);
207    #[doc(alias = "SCNParticleBlendModeAlpha")]
208    pub const Alpha: Self = Self(4);
209    #[doc(alias = "SCNParticleBlendModeReplace")]
210    pub const Replace: Self = Self(5);
211}
212
213unsafe impl Encode for SCNParticleBlendMode {
214    const ENCODING: Encoding = NSInteger::ENCODING;
215}
216
217unsafe impl RefEncode for SCNParticleBlendMode {
218    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
219}
220
221/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleorientationmode?language=objc)
222// NS_ENUM
223#[repr(transparent)]
224#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
225pub struct SCNParticleOrientationMode(pub NSInteger);
226impl SCNParticleOrientationMode {
227    #[doc(alias = "SCNParticleOrientationModeBillboardScreenAligned")]
228    pub const BillboardScreenAligned: Self = Self(0);
229    #[doc(alias = "SCNParticleOrientationModeBillboardViewAligned")]
230    pub const BillboardViewAligned: Self = Self(1);
231    #[doc(alias = "SCNParticleOrientationModeFree")]
232    pub const Free: Self = Self(2);
233    #[doc(alias = "SCNParticleOrientationModeBillboardYAligned")]
234    pub const BillboardYAligned: Self = Self(3);
235}
236
237unsafe impl Encode for SCNParticleOrientationMode {
238    const ENCODING: Encoding = NSInteger::ENCODING;
239}
240
241unsafe impl RefEncode for SCNParticleOrientationMode {
242    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
243}
244
245/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlebirthlocation?language=objc)
246// NS_ENUM
247#[repr(transparent)]
248#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
249pub struct SCNParticleBirthLocation(pub NSInteger);
250impl SCNParticleBirthLocation {
251    #[doc(alias = "SCNParticleBirthLocationSurface")]
252    pub const Surface: Self = Self(0);
253    #[doc(alias = "SCNParticleBirthLocationVolume")]
254    pub const Volume: Self = Self(1);
255    #[doc(alias = "SCNParticleBirthLocationVertex")]
256    pub const Vertex: Self = Self(2);
257}
258
259unsafe impl Encode for SCNParticleBirthLocation {
260    const ENCODING: Encoding = NSInteger::ENCODING;
261}
262
263unsafe impl RefEncode for SCNParticleBirthLocation {
264    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
265}
266
267/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlebirthdirection?language=objc)
268// NS_ENUM
269#[repr(transparent)]
270#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
271pub struct SCNParticleBirthDirection(pub NSInteger);
272impl SCNParticleBirthDirection {
273    #[doc(alias = "SCNParticleBirthDirectionConstant")]
274    pub const Constant: Self = Self(0);
275    #[doc(alias = "SCNParticleBirthDirectionSurfaceNormal")]
276    pub const SurfaceNormal: Self = Self(1);
277    #[doc(alias = "SCNParticleBirthDirectionRandom")]
278    pub const Random: Self = Self(2);
279}
280
281unsafe impl Encode for SCNParticleBirthDirection {
282    const ENCODING: Encoding = NSInteger::ENCODING;
283}
284
285unsafe impl RefEncode for SCNParticleBirthDirection {
286    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
287}
288
289/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleimagesequenceanimationmode?language=objc)
290// NS_ENUM
291#[repr(transparent)]
292#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
293pub struct SCNParticleImageSequenceAnimationMode(pub NSInteger);
294impl SCNParticleImageSequenceAnimationMode {
295    #[doc(alias = "SCNParticleImageSequenceAnimationModeRepeat")]
296    pub const Repeat: Self = Self(0);
297    #[doc(alias = "SCNParticleImageSequenceAnimationModeClamp")]
298    pub const Clamp: Self = Self(1);
299    #[doc(alias = "SCNParticleImageSequenceAnimationModeAutoReverse")]
300    pub const AutoReverse: Self = Self(2);
301}
302
303unsafe impl Encode for SCNParticleImageSequenceAnimationMode {
304    const ENCODING: Encoding = NSInteger::ENCODING;
305}
306
307unsafe impl RefEncode for SCNParticleImageSequenceAnimationMode {
308    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
309}
310
311/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleinputmode?language=objc)
312// NS_ENUM
313#[repr(transparent)]
314#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
315pub struct SCNParticleInputMode(pub NSInteger);
316impl SCNParticleInputMode {
317    #[doc(alias = "SCNParticleInputModeOverLife")]
318    pub const OverLife: Self = Self(0);
319    #[doc(alias = "SCNParticleInputModeOverDistance")]
320    pub const OverDistance: Self = Self(1);
321    #[doc(alias = "SCNParticleInputModeOverOtherProperty")]
322    pub const OverOtherProperty: Self = Self(2);
323}
324
325unsafe impl Encode for SCNParticleInputMode {
326    const ENCODING: Encoding = NSInteger::ENCODING;
327}
328
329unsafe impl RefEncode for SCNParticleInputMode {
330    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
331}
332
333/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlemodifierstage?language=objc)
334// NS_ENUM
335#[repr(transparent)]
336#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
337pub struct SCNParticleModifierStage(pub NSInteger);
338impl SCNParticleModifierStage {
339    #[doc(alias = "SCNParticleModifierStagePreDynamics")]
340    pub const PreDynamics: Self = Self(0);
341    #[doc(alias = "SCNParticleModifierStagePostDynamics")]
342    pub const PostDynamics: Self = Self(1);
343    #[doc(alias = "SCNParticleModifierStagePreCollision")]
344    pub const PreCollision: Self = Self(2);
345    #[doc(alias = "SCNParticleModifierStagePostCollision")]
346    pub const PostCollision: Self = Self(3);
347}
348
349unsafe impl Encode for SCNParticleModifierStage {
350    const ENCODING: Encoding = NSInteger::ENCODING;
351}
352
353unsafe impl RefEncode for SCNParticleModifierStage {
354    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
355}
356
357/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticleevent?language=objc)
358// NS_ENUM
359#[repr(transparent)]
360#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
361pub struct SCNParticleEvent(pub NSInteger);
362impl SCNParticleEvent {
363    #[doc(alias = "SCNParticleEventBirth")]
364    pub const Birth: Self = Self(0);
365    #[doc(alias = "SCNParticleEventDeath")]
366    pub const Death: Self = Self(1);
367    #[doc(alias = "SCNParticleEventCollision")]
368    pub const Collision: Self = Self(2);
369}
370
371unsafe impl Encode for SCNParticleEvent {
372    const ENCODING: Encoding = NSInteger::ENCODING;
373}
374
375unsafe impl RefEncode for SCNParticleEvent {
376    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
377}
378
379extern_class!(
380    /// The SCNParticlePropertyController class controls the variation over time or over distance of a particle property.
381    ///
382    /// See also [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlepropertycontroller?language=objc)
383    #[unsafe(super(NSObject))]
384    #[derive(Debug, PartialEq, Eq, Hash)]
385    pub struct SCNParticlePropertyController;
386);
387
388extern_conformance!(
389    unsafe impl NSCoding for SCNParticlePropertyController {}
390);
391
392extern_conformance!(
393    unsafe impl NSCopying for SCNParticlePropertyController {}
394);
395
396unsafe impl CopyingHelper for SCNParticlePropertyController {
397    type Result = Self;
398}
399
400extern_conformance!(
401    unsafe impl NSObjectProtocol for SCNParticlePropertyController {}
402);
403
404extern_conformance!(
405    unsafe impl NSSecureCoding for SCNParticlePropertyController {}
406);
407
408impl SCNParticlePropertyController {
409    extern_methods!(
410        #[cfg(feature = "objc2-quartz-core")]
411        #[cfg(not(target_os = "watchos"))]
412        #[unsafe(method(controllerWithAnimation:))]
413        #[unsafe(method_family = none)]
414        pub unsafe fn controllerWithAnimation(animation: &CAAnimation) -> Retained<Self>;
415
416        #[cfg(feature = "objc2-quartz-core")]
417        #[cfg(not(target_os = "watchos"))]
418        #[unsafe(method(animation))]
419        #[unsafe(method_family = none)]
420        pub unsafe fn animation(&self) -> Retained<CAAnimation>;
421
422        #[cfg(feature = "objc2-quartz-core")]
423        #[cfg(not(target_os = "watchos"))]
424        /// Setter for [`animation`][Self::animation].
425        #[unsafe(method(setAnimation:))]
426        #[unsafe(method_family = none)]
427        pub unsafe fn setAnimation(&self, animation: &CAAnimation);
428
429        #[unsafe(method(inputMode))]
430        #[unsafe(method_family = none)]
431        pub unsafe fn inputMode(&self) -> SCNParticleInputMode;
432
433        /// Setter for [`inputMode`][Self::inputMode].
434        #[unsafe(method(setInputMode:))]
435        #[unsafe(method_family = none)]
436        pub unsafe fn setInputMode(&self, input_mode: SCNParticleInputMode);
437
438        #[cfg(feature = "objc2-core-foundation")]
439        #[unsafe(method(inputScale))]
440        #[unsafe(method_family = none)]
441        pub unsafe fn inputScale(&self) -> CGFloat;
442
443        #[cfg(feature = "objc2-core-foundation")]
444        /// Setter for [`inputScale`][Self::inputScale].
445        #[unsafe(method(setInputScale:))]
446        #[unsafe(method_family = none)]
447        pub unsafe fn setInputScale(&self, input_scale: CGFloat);
448
449        #[cfg(feature = "objc2-core-foundation")]
450        #[unsafe(method(inputBias))]
451        #[unsafe(method_family = none)]
452        pub unsafe fn inputBias(&self) -> CGFloat;
453
454        #[cfg(feature = "objc2-core-foundation")]
455        /// Setter for [`inputBias`][Self::inputBias].
456        #[unsafe(method(setInputBias:))]
457        #[unsafe(method_family = none)]
458        pub unsafe fn setInputBias(&self, input_bias: CGFloat);
459
460        #[cfg(feature = "SCNNode")]
461        #[unsafe(method(inputOrigin))]
462        #[unsafe(method_family = none)]
463        pub unsafe fn inputOrigin(&self) -> Option<Retained<SCNNode>>;
464
465        #[cfg(feature = "SCNNode")]
466        /// Setter for [`inputOrigin`][Self::inputOrigin].
467        ///
468        /// This is a [weak property][objc2::topics::weak_property].
469        #[unsafe(method(setInputOrigin:))]
470        #[unsafe(method_family = none)]
471        pub unsafe fn setInputOrigin(&self, input_origin: Option<&SCNNode>);
472
473        #[unsafe(method(inputProperty))]
474        #[unsafe(method_family = none)]
475        pub unsafe fn inputProperty(&self) -> Option<Retained<SCNParticleProperty>>;
476
477        /// Setter for [`inputProperty`][Self::inputProperty].
478        ///
479        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
480        #[unsafe(method(setInputProperty:))]
481        #[unsafe(method_family = none)]
482        pub unsafe fn setInputProperty(&self, input_property: Option<&SCNParticleProperty>);
483    );
484}
485
486/// Methods declared on superclass `NSObject`.
487impl SCNParticlePropertyController {
488    extern_methods!(
489        #[unsafe(method(init))]
490        #[unsafe(method_family = init)]
491        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
492
493        #[unsafe(method(new))]
494        #[unsafe(method_family = new)]
495        pub unsafe fn new() -> Retained<Self>;
496    );
497}
498
499extern_class!(
500    /// The SCNParticleSystem class represents a system of particles.
501    ///
502    /// See also [Apple's documentation](https://developer.apple.com/documentation/scenekit/scnparticlesystem?language=objc)
503    #[unsafe(super(NSObject))]
504    #[derive(Debug, PartialEq, Eq, Hash)]
505    pub struct SCNParticleSystem;
506);
507
508extern_conformance!(
509    unsafe impl NSCoding for SCNParticleSystem {}
510);
511
512extern_conformance!(
513    unsafe impl NSCopying for SCNParticleSystem {}
514);
515
516unsafe impl CopyingHelper for SCNParticleSystem {
517    type Result = Self;
518}
519
520extern_conformance!(
521    unsafe impl NSObjectProtocol for SCNParticleSystem {}
522);
523
524extern_conformance!(
525    unsafe impl NSSecureCoding for SCNParticleSystem {}
526);
527
528#[cfg(feature = "SCNAnimation")]
529extern_conformance!(
530    unsafe impl SCNAnimatable for SCNParticleSystem {}
531);
532
533impl SCNParticleSystem {
534    extern_methods!(
535        #[unsafe(method(particleSystem))]
536        #[unsafe(method_family = none)]
537        pub unsafe fn particleSystem() -> Retained<Self>;
538
539        #[unsafe(method(particleSystemNamed:inDirectory:))]
540        #[unsafe(method_family = none)]
541        pub unsafe fn particleSystemNamed_inDirectory(
542            name: &NSString,
543            directory: Option<&NSString>,
544        ) -> Option<Retained<Self>>;
545
546        #[cfg(feature = "objc2-core-foundation")]
547        #[unsafe(method(emissionDuration))]
548        #[unsafe(method_family = none)]
549        pub unsafe fn emissionDuration(&self) -> CGFloat;
550
551        #[cfg(feature = "objc2-core-foundation")]
552        /// Setter for [`emissionDuration`][Self::emissionDuration].
553        #[unsafe(method(setEmissionDuration:))]
554        #[unsafe(method_family = none)]
555        pub unsafe fn setEmissionDuration(&self, emission_duration: CGFloat);
556
557        #[cfg(feature = "objc2-core-foundation")]
558        #[unsafe(method(emissionDurationVariation))]
559        #[unsafe(method_family = none)]
560        pub unsafe fn emissionDurationVariation(&self) -> CGFloat;
561
562        #[cfg(feature = "objc2-core-foundation")]
563        /// Setter for [`emissionDurationVariation`][Self::emissionDurationVariation].
564        #[unsafe(method(setEmissionDurationVariation:))]
565        #[unsafe(method_family = none)]
566        pub unsafe fn setEmissionDurationVariation(&self, emission_duration_variation: CGFloat);
567
568        #[cfg(feature = "objc2-core-foundation")]
569        #[unsafe(method(idleDuration))]
570        #[unsafe(method_family = none)]
571        pub unsafe fn idleDuration(&self) -> CGFloat;
572
573        #[cfg(feature = "objc2-core-foundation")]
574        /// Setter for [`idleDuration`][Self::idleDuration].
575        #[unsafe(method(setIdleDuration:))]
576        #[unsafe(method_family = none)]
577        pub unsafe fn setIdleDuration(&self, idle_duration: CGFloat);
578
579        #[cfg(feature = "objc2-core-foundation")]
580        #[unsafe(method(idleDurationVariation))]
581        #[unsafe(method_family = none)]
582        pub unsafe fn idleDurationVariation(&self) -> CGFloat;
583
584        #[cfg(feature = "objc2-core-foundation")]
585        /// Setter for [`idleDurationVariation`][Self::idleDurationVariation].
586        #[unsafe(method(setIdleDurationVariation:))]
587        #[unsafe(method_family = none)]
588        pub unsafe fn setIdleDurationVariation(&self, idle_duration_variation: CGFloat);
589
590        #[unsafe(method(loops))]
591        #[unsafe(method_family = none)]
592        pub unsafe fn loops(&self) -> bool;
593
594        /// Setter for [`loops`][Self::loops].
595        #[unsafe(method(setLoops:))]
596        #[unsafe(method_family = none)]
597        pub unsafe fn setLoops(&self, loops: bool);
598
599        #[cfg(feature = "objc2-core-foundation")]
600        #[unsafe(method(birthRate))]
601        #[unsafe(method_family = none)]
602        pub unsafe fn birthRate(&self) -> CGFloat;
603
604        #[cfg(feature = "objc2-core-foundation")]
605        /// Setter for [`birthRate`][Self::birthRate].
606        #[unsafe(method(setBirthRate:))]
607        #[unsafe(method_family = none)]
608        pub unsafe fn setBirthRate(&self, birth_rate: CGFloat);
609
610        #[cfg(feature = "objc2-core-foundation")]
611        #[unsafe(method(birthRateVariation))]
612        #[unsafe(method_family = none)]
613        pub unsafe fn birthRateVariation(&self) -> CGFloat;
614
615        #[cfg(feature = "objc2-core-foundation")]
616        /// Setter for [`birthRateVariation`][Self::birthRateVariation].
617        #[unsafe(method(setBirthRateVariation:))]
618        #[unsafe(method_family = none)]
619        pub unsafe fn setBirthRateVariation(&self, birth_rate_variation: CGFloat);
620
621        #[cfg(feature = "objc2-core-foundation")]
622        #[unsafe(method(warmupDuration))]
623        #[unsafe(method_family = none)]
624        pub unsafe fn warmupDuration(&self) -> CGFloat;
625
626        #[cfg(feature = "objc2-core-foundation")]
627        /// Setter for [`warmupDuration`][Self::warmupDuration].
628        #[unsafe(method(setWarmupDuration:))]
629        #[unsafe(method_family = none)]
630        pub unsafe fn setWarmupDuration(&self, warmup_duration: CGFloat);
631
632        #[cfg(feature = "SCNGeometry")]
633        #[unsafe(method(emitterShape))]
634        #[unsafe(method_family = none)]
635        pub unsafe fn emitterShape(&self) -> Option<Retained<SCNGeometry>>;
636
637        #[cfg(feature = "SCNGeometry")]
638        /// Setter for [`emitterShape`][Self::emitterShape].
639        #[unsafe(method(setEmitterShape:))]
640        #[unsafe(method_family = none)]
641        pub unsafe fn setEmitterShape(&self, emitter_shape: Option<&SCNGeometry>);
642
643        #[unsafe(method(birthLocation))]
644        #[unsafe(method_family = none)]
645        pub unsafe fn birthLocation(&self) -> SCNParticleBirthLocation;
646
647        /// Setter for [`birthLocation`][Self::birthLocation].
648        #[unsafe(method(setBirthLocation:))]
649        #[unsafe(method_family = none)]
650        pub unsafe fn setBirthLocation(&self, birth_location: SCNParticleBirthLocation);
651
652        #[unsafe(method(birthDirection))]
653        #[unsafe(method_family = none)]
654        pub unsafe fn birthDirection(&self) -> SCNParticleBirthDirection;
655
656        /// Setter for [`birthDirection`][Self::birthDirection].
657        #[unsafe(method(setBirthDirection:))]
658        #[unsafe(method_family = none)]
659        pub unsafe fn setBirthDirection(&self, birth_direction: SCNParticleBirthDirection);
660
661        #[cfg(feature = "objc2-core-foundation")]
662        #[unsafe(method(spreadingAngle))]
663        #[unsafe(method_family = none)]
664        pub unsafe fn spreadingAngle(&self) -> CGFloat;
665
666        #[cfg(feature = "objc2-core-foundation")]
667        /// Setter for [`spreadingAngle`][Self::spreadingAngle].
668        #[unsafe(method(setSpreadingAngle:))]
669        #[unsafe(method_family = none)]
670        pub unsafe fn setSpreadingAngle(&self, spreading_angle: CGFloat);
671
672        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
673        #[unsafe(method(emittingDirection))]
674        #[unsafe(method_family = none)]
675        pub unsafe fn emittingDirection(&self) -> SCNVector3;
676
677        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
678        /// Setter for [`emittingDirection`][Self::emittingDirection].
679        #[unsafe(method(setEmittingDirection:))]
680        #[unsafe(method_family = none)]
681        pub unsafe fn setEmittingDirection(&self, emitting_direction: SCNVector3);
682
683        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
684        #[unsafe(method(orientationDirection))]
685        #[unsafe(method_family = none)]
686        pub unsafe fn orientationDirection(&self) -> SCNVector3;
687
688        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
689        /// Setter for [`orientationDirection`][Self::orientationDirection].
690        #[unsafe(method(setOrientationDirection:))]
691        #[unsafe(method_family = none)]
692        pub unsafe fn setOrientationDirection(&self, orientation_direction: SCNVector3);
693
694        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
695        #[unsafe(method(acceleration))]
696        #[unsafe(method_family = none)]
697        pub unsafe fn acceleration(&self) -> SCNVector3;
698
699        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
700        /// Setter for [`acceleration`][Self::acceleration].
701        #[unsafe(method(setAcceleration:))]
702        #[unsafe(method_family = none)]
703        pub unsafe fn setAcceleration(&self, acceleration: SCNVector3);
704
705        #[unsafe(method(isLocal))]
706        #[unsafe(method_family = none)]
707        pub unsafe fn isLocal(&self) -> bool;
708
709        /// Setter for [`isLocal`][Self::isLocal].
710        #[unsafe(method(setLocal:))]
711        #[unsafe(method_family = none)]
712        pub unsafe fn setLocal(&self, local: bool);
713
714        #[cfg(feature = "objc2-core-foundation")]
715        #[unsafe(method(particleAngle))]
716        #[unsafe(method_family = none)]
717        pub unsafe fn particleAngle(&self) -> CGFloat;
718
719        #[cfg(feature = "objc2-core-foundation")]
720        /// Setter for [`particleAngle`][Self::particleAngle].
721        #[unsafe(method(setParticleAngle:))]
722        #[unsafe(method_family = none)]
723        pub unsafe fn setParticleAngle(&self, particle_angle: CGFloat);
724
725        #[cfg(feature = "objc2-core-foundation")]
726        #[unsafe(method(particleAngleVariation))]
727        #[unsafe(method_family = none)]
728        pub unsafe fn particleAngleVariation(&self) -> CGFloat;
729
730        #[cfg(feature = "objc2-core-foundation")]
731        /// Setter for [`particleAngleVariation`][Self::particleAngleVariation].
732        #[unsafe(method(setParticleAngleVariation:))]
733        #[unsafe(method_family = none)]
734        pub unsafe fn setParticleAngleVariation(&self, particle_angle_variation: CGFloat);
735
736        #[cfg(feature = "objc2-core-foundation")]
737        #[unsafe(method(particleVelocity))]
738        #[unsafe(method_family = none)]
739        pub unsafe fn particleVelocity(&self) -> CGFloat;
740
741        #[cfg(feature = "objc2-core-foundation")]
742        /// Setter for [`particleVelocity`][Self::particleVelocity].
743        #[unsafe(method(setParticleVelocity:))]
744        #[unsafe(method_family = none)]
745        pub unsafe fn setParticleVelocity(&self, particle_velocity: CGFloat);
746
747        #[cfg(feature = "objc2-core-foundation")]
748        #[unsafe(method(particleVelocityVariation))]
749        #[unsafe(method_family = none)]
750        pub unsafe fn particleVelocityVariation(&self) -> CGFloat;
751
752        #[cfg(feature = "objc2-core-foundation")]
753        /// Setter for [`particleVelocityVariation`][Self::particleVelocityVariation].
754        #[unsafe(method(setParticleVelocityVariation:))]
755        #[unsafe(method_family = none)]
756        pub unsafe fn setParticleVelocityVariation(&self, particle_velocity_variation: CGFloat);
757
758        #[cfg(feature = "objc2-core-foundation")]
759        #[unsafe(method(particleAngularVelocity))]
760        #[unsafe(method_family = none)]
761        pub unsafe fn particleAngularVelocity(&self) -> CGFloat;
762
763        #[cfg(feature = "objc2-core-foundation")]
764        /// Setter for [`particleAngularVelocity`][Self::particleAngularVelocity].
765        #[unsafe(method(setParticleAngularVelocity:))]
766        #[unsafe(method_family = none)]
767        pub unsafe fn setParticleAngularVelocity(&self, particle_angular_velocity: CGFloat);
768
769        #[cfg(feature = "objc2-core-foundation")]
770        #[unsafe(method(particleAngularVelocityVariation))]
771        #[unsafe(method_family = none)]
772        pub unsafe fn particleAngularVelocityVariation(&self) -> CGFloat;
773
774        #[cfg(feature = "objc2-core-foundation")]
775        /// Setter for [`particleAngularVelocityVariation`][Self::particleAngularVelocityVariation].
776        #[unsafe(method(setParticleAngularVelocityVariation:))]
777        #[unsafe(method_family = none)]
778        pub unsafe fn setParticleAngularVelocityVariation(
779            &self,
780            particle_angular_velocity_variation: CGFloat,
781        );
782
783        #[cfg(feature = "objc2-core-foundation")]
784        #[unsafe(method(particleLifeSpan))]
785        #[unsafe(method_family = none)]
786        pub unsafe fn particleLifeSpan(&self) -> CGFloat;
787
788        #[cfg(feature = "objc2-core-foundation")]
789        /// Setter for [`particleLifeSpan`][Self::particleLifeSpan].
790        #[unsafe(method(setParticleLifeSpan:))]
791        #[unsafe(method_family = none)]
792        pub unsafe fn setParticleLifeSpan(&self, particle_life_span: CGFloat);
793
794        #[cfg(feature = "objc2-core-foundation")]
795        #[unsafe(method(particleLifeSpanVariation))]
796        #[unsafe(method_family = none)]
797        pub unsafe fn particleLifeSpanVariation(&self) -> CGFloat;
798
799        #[cfg(feature = "objc2-core-foundation")]
800        /// Setter for [`particleLifeSpanVariation`][Self::particleLifeSpanVariation].
801        #[unsafe(method(setParticleLifeSpanVariation:))]
802        #[unsafe(method_family = none)]
803        pub unsafe fn setParticleLifeSpanVariation(&self, particle_life_span_variation: CGFloat);
804
805        #[unsafe(method(systemSpawnedOnDying))]
806        #[unsafe(method_family = none)]
807        pub unsafe fn systemSpawnedOnDying(&self) -> Option<Retained<SCNParticleSystem>>;
808
809        /// Setter for [`systemSpawnedOnDying`][Self::systemSpawnedOnDying].
810        #[unsafe(method(setSystemSpawnedOnDying:))]
811        #[unsafe(method_family = none)]
812        pub unsafe fn setSystemSpawnedOnDying(
813            &self,
814            system_spawned_on_dying: Option<&SCNParticleSystem>,
815        );
816
817        #[unsafe(method(systemSpawnedOnCollision))]
818        #[unsafe(method_family = none)]
819        pub unsafe fn systemSpawnedOnCollision(&self) -> Option<Retained<SCNParticleSystem>>;
820
821        /// Setter for [`systemSpawnedOnCollision`][Self::systemSpawnedOnCollision].
822        #[unsafe(method(setSystemSpawnedOnCollision:))]
823        #[unsafe(method_family = none)]
824        pub unsafe fn setSystemSpawnedOnCollision(
825            &self,
826            system_spawned_on_collision: Option<&SCNParticleSystem>,
827        );
828
829        #[unsafe(method(systemSpawnedOnLiving))]
830        #[unsafe(method_family = none)]
831        pub unsafe fn systemSpawnedOnLiving(&self) -> Option<Retained<SCNParticleSystem>>;
832
833        /// Setter for [`systemSpawnedOnLiving`][Self::systemSpawnedOnLiving].
834        #[unsafe(method(setSystemSpawnedOnLiving:))]
835        #[unsafe(method_family = none)]
836        pub unsafe fn setSystemSpawnedOnLiving(
837            &self,
838            system_spawned_on_living: Option<&SCNParticleSystem>,
839        );
840
841        #[unsafe(method(particleImage))]
842        #[unsafe(method_family = none)]
843        pub unsafe fn particleImage(&self) -> Option<Retained<AnyObject>>;
844
845        /// Setter for [`particleImage`][Self::particleImage].
846        ///
847        /// # Safety
848        ///
849        /// `particle_image` should be of the correct type.
850        #[unsafe(method(setParticleImage:))]
851        #[unsafe(method_family = none)]
852        pub unsafe fn setParticleImage(&self, particle_image: Option<&AnyObject>);
853
854        #[unsafe(method(imageSequenceColumnCount))]
855        #[unsafe(method_family = none)]
856        pub unsafe fn imageSequenceColumnCount(&self) -> NSUInteger;
857
858        /// Setter for [`imageSequenceColumnCount`][Self::imageSequenceColumnCount].
859        #[unsafe(method(setImageSequenceColumnCount:))]
860        #[unsafe(method_family = none)]
861        pub unsafe fn setImageSequenceColumnCount(&self, image_sequence_column_count: NSUInteger);
862
863        #[unsafe(method(imageSequenceRowCount))]
864        #[unsafe(method_family = none)]
865        pub unsafe fn imageSequenceRowCount(&self) -> NSUInteger;
866
867        /// Setter for [`imageSequenceRowCount`][Self::imageSequenceRowCount].
868        #[unsafe(method(setImageSequenceRowCount:))]
869        #[unsafe(method_family = none)]
870        pub unsafe fn setImageSequenceRowCount(&self, image_sequence_row_count: NSUInteger);
871
872        #[cfg(feature = "objc2-core-foundation")]
873        #[unsafe(method(imageSequenceInitialFrame))]
874        #[unsafe(method_family = none)]
875        pub unsafe fn imageSequenceInitialFrame(&self) -> CGFloat;
876
877        #[cfg(feature = "objc2-core-foundation")]
878        /// Setter for [`imageSequenceInitialFrame`][Self::imageSequenceInitialFrame].
879        #[unsafe(method(setImageSequenceInitialFrame:))]
880        #[unsafe(method_family = none)]
881        pub unsafe fn setImageSequenceInitialFrame(&self, image_sequence_initial_frame: CGFloat);
882
883        #[cfg(feature = "objc2-core-foundation")]
884        #[unsafe(method(imageSequenceInitialFrameVariation))]
885        #[unsafe(method_family = none)]
886        pub unsafe fn imageSequenceInitialFrameVariation(&self) -> CGFloat;
887
888        #[cfg(feature = "objc2-core-foundation")]
889        /// Setter for [`imageSequenceInitialFrameVariation`][Self::imageSequenceInitialFrameVariation].
890        #[unsafe(method(setImageSequenceInitialFrameVariation:))]
891        #[unsafe(method_family = none)]
892        pub unsafe fn setImageSequenceInitialFrameVariation(
893            &self,
894            image_sequence_initial_frame_variation: CGFloat,
895        );
896
897        #[cfg(feature = "objc2-core-foundation")]
898        #[unsafe(method(imageSequenceFrameRate))]
899        #[unsafe(method_family = none)]
900        pub unsafe fn imageSequenceFrameRate(&self) -> CGFloat;
901
902        #[cfg(feature = "objc2-core-foundation")]
903        /// Setter for [`imageSequenceFrameRate`][Self::imageSequenceFrameRate].
904        #[unsafe(method(setImageSequenceFrameRate:))]
905        #[unsafe(method_family = none)]
906        pub unsafe fn setImageSequenceFrameRate(&self, image_sequence_frame_rate: CGFloat);
907
908        #[cfg(feature = "objc2-core-foundation")]
909        #[unsafe(method(imageSequenceFrameRateVariation))]
910        #[unsafe(method_family = none)]
911        pub unsafe fn imageSequenceFrameRateVariation(&self) -> CGFloat;
912
913        #[cfg(feature = "objc2-core-foundation")]
914        /// Setter for [`imageSequenceFrameRateVariation`][Self::imageSequenceFrameRateVariation].
915        #[unsafe(method(setImageSequenceFrameRateVariation:))]
916        #[unsafe(method_family = none)]
917        pub unsafe fn setImageSequenceFrameRateVariation(
918            &self,
919            image_sequence_frame_rate_variation: CGFloat,
920        );
921
922        #[unsafe(method(imageSequenceAnimationMode))]
923        #[unsafe(method_family = none)]
924        pub unsafe fn imageSequenceAnimationMode(&self) -> SCNParticleImageSequenceAnimationMode;
925
926        /// Setter for [`imageSequenceAnimationMode`][Self::imageSequenceAnimationMode].
927        #[unsafe(method(setImageSequenceAnimationMode:))]
928        #[unsafe(method_family = none)]
929        pub unsafe fn setImageSequenceAnimationMode(
930            &self,
931            image_sequence_animation_mode: SCNParticleImageSequenceAnimationMode,
932        );
933
934        #[cfg(feature = "objc2-app-kit")]
935        #[cfg(target_os = "macos")]
936        #[unsafe(method(particleColor))]
937        #[unsafe(method_family = none)]
938        pub unsafe fn particleColor(&self) -> Retained<NSColor>;
939
940        #[cfg(feature = "objc2-app-kit")]
941        #[cfg(target_os = "macos")]
942        /// Setter for [`particleColor`][Self::particleColor].
943        #[unsafe(method(setParticleColor:))]
944        #[unsafe(method_family = none)]
945        pub unsafe fn setParticleColor(&self, particle_color: &NSColor);
946
947        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
948        #[unsafe(method(particleColorVariation))]
949        #[unsafe(method_family = none)]
950        pub unsafe fn particleColorVariation(&self) -> SCNVector4;
951
952        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-core-foundation"))]
953        /// Setter for [`particleColorVariation`][Self::particleColorVariation].
954        #[unsafe(method(setParticleColorVariation:))]
955        #[unsafe(method_family = none)]
956        pub unsafe fn setParticleColorVariation(&self, particle_color_variation: SCNVector4);
957
958        #[cfg(feature = "objc2-core-foundation")]
959        #[unsafe(method(particleSize))]
960        #[unsafe(method_family = none)]
961        pub unsafe fn particleSize(&self) -> CGFloat;
962
963        #[cfg(feature = "objc2-core-foundation")]
964        /// Setter for [`particleSize`][Self::particleSize].
965        #[unsafe(method(setParticleSize:))]
966        #[unsafe(method_family = none)]
967        pub unsafe fn setParticleSize(&self, particle_size: CGFloat);
968
969        #[cfg(feature = "objc2-core-foundation")]
970        #[unsafe(method(particleSizeVariation))]
971        #[unsafe(method_family = none)]
972        pub unsafe fn particleSizeVariation(&self) -> CGFloat;
973
974        #[cfg(feature = "objc2-core-foundation")]
975        /// Setter for [`particleSizeVariation`][Self::particleSizeVariation].
976        #[unsafe(method(setParticleSizeVariation:))]
977        #[unsafe(method_family = none)]
978        pub unsafe fn setParticleSizeVariation(&self, particle_size_variation: CGFloat);
979
980        #[cfg(feature = "objc2-core-foundation")]
981        #[unsafe(method(particleIntensity))]
982        #[unsafe(method_family = none)]
983        pub unsafe fn particleIntensity(&self) -> CGFloat;
984
985        #[cfg(feature = "objc2-core-foundation")]
986        /// Setter for [`particleIntensity`][Self::particleIntensity].
987        #[unsafe(method(setParticleIntensity:))]
988        #[unsafe(method_family = none)]
989        pub unsafe fn setParticleIntensity(&self, particle_intensity: CGFloat);
990
991        #[cfg(feature = "objc2-core-foundation")]
992        #[unsafe(method(particleIntensityVariation))]
993        #[unsafe(method_family = none)]
994        pub unsafe fn particleIntensityVariation(&self) -> CGFloat;
995
996        #[cfg(feature = "objc2-core-foundation")]
997        /// Setter for [`particleIntensityVariation`][Self::particleIntensityVariation].
998        #[unsafe(method(setParticleIntensityVariation:))]
999        #[unsafe(method_family = none)]
1000        pub unsafe fn setParticleIntensityVariation(&self, particle_intensity_variation: CGFloat);
1001
1002        #[unsafe(method(blendMode))]
1003        #[unsafe(method_family = none)]
1004        pub unsafe fn blendMode(&self) -> SCNParticleBlendMode;
1005
1006        /// Setter for [`blendMode`][Self::blendMode].
1007        #[unsafe(method(setBlendMode:))]
1008        #[unsafe(method_family = none)]
1009        pub unsafe fn setBlendMode(&self, blend_mode: SCNParticleBlendMode);
1010
1011        #[unsafe(method(isBlackPassEnabled))]
1012        #[unsafe(method_family = none)]
1013        pub unsafe fn isBlackPassEnabled(&self) -> bool;
1014
1015        /// Setter for [`isBlackPassEnabled`][Self::isBlackPassEnabled].
1016        #[unsafe(method(setBlackPassEnabled:))]
1017        #[unsafe(method_family = none)]
1018        pub unsafe fn setBlackPassEnabled(&self, black_pass_enabled: bool);
1019
1020        #[unsafe(method(orientationMode))]
1021        #[unsafe(method_family = none)]
1022        pub unsafe fn orientationMode(&self) -> SCNParticleOrientationMode;
1023
1024        /// Setter for [`orientationMode`][Self::orientationMode].
1025        #[unsafe(method(setOrientationMode:))]
1026        #[unsafe(method_family = none)]
1027        pub unsafe fn setOrientationMode(&self, orientation_mode: SCNParticleOrientationMode);
1028
1029        #[unsafe(method(sortingMode))]
1030        #[unsafe(method_family = none)]
1031        pub unsafe fn sortingMode(&self) -> SCNParticleSortingMode;
1032
1033        /// Setter for [`sortingMode`][Self::sortingMode].
1034        #[unsafe(method(setSortingMode:))]
1035        #[unsafe(method_family = none)]
1036        pub unsafe fn setSortingMode(&self, sorting_mode: SCNParticleSortingMode);
1037
1038        #[unsafe(method(isLightingEnabled))]
1039        #[unsafe(method_family = none)]
1040        pub unsafe fn isLightingEnabled(&self) -> bool;
1041
1042        /// Setter for [`isLightingEnabled`][Self::isLightingEnabled].
1043        #[unsafe(method(setLightingEnabled:))]
1044        #[unsafe(method_family = none)]
1045        pub unsafe fn setLightingEnabled(&self, lighting_enabled: bool);
1046
1047        #[unsafe(method(affectedByGravity))]
1048        #[unsafe(method_family = none)]
1049        pub unsafe fn affectedByGravity(&self) -> bool;
1050
1051        /// Setter for [`affectedByGravity`][Self::affectedByGravity].
1052        #[unsafe(method(setAffectedByGravity:))]
1053        #[unsafe(method_family = none)]
1054        pub unsafe fn setAffectedByGravity(&self, affected_by_gravity: bool);
1055
1056        #[unsafe(method(affectedByPhysicsFields))]
1057        #[unsafe(method_family = none)]
1058        pub unsafe fn affectedByPhysicsFields(&self) -> bool;
1059
1060        /// Setter for [`affectedByPhysicsFields`][Self::affectedByPhysicsFields].
1061        #[unsafe(method(setAffectedByPhysicsFields:))]
1062        #[unsafe(method_family = none)]
1063        pub unsafe fn setAffectedByPhysicsFields(&self, affected_by_physics_fields: bool);
1064
1065        #[unsafe(method(particleDiesOnCollision))]
1066        #[unsafe(method_family = none)]
1067        pub unsafe fn particleDiesOnCollision(&self) -> bool;
1068
1069        /// Setter for [`particleDiesOnCollision`][Self::particleDiesOnCollision].
1070        #[unsafe(method(setParticleDiesOnCollision:))]
1071        #[unsafe(method_family = none)]
1072        pub unsafe fn setParticleDiesOnCollision(&self, particle_dies_on_collision: bool);
1073
1074        #[cfg(feature = "SCNNode")]
1075        #[unsafe(method(colliderNodes))]
1076        #[unsafe(method_family = none)]
1077        pub unsafe fn colliderNodes(&self) -> Option<Retained<NSArray<SCNNode>>>;
1078
1079        #[cfg(feature = "SCNNode")]
1080        /// Setter for [`colliderNodes`][Self::colliderNodes].
1081        ///
1082        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
1083        #[unsafe(method(setColliderNodes:))]
1084        #[unsafe(method_family = none)]
1085        pub unsafe fn setColliderNodes(&self, collider_nodes: Option<&NSArray<SCNNode>>);
1086
1087        #[cfg(feature = "objc2-core-foundation")]
1088        #[unsafe(method(particleMass))]
1089        #[unsafe(method_family = none)]
1090        pub unsafe fn particleMass(&self) -> CGFloat;
1091
1092        #[cfg(feature = "objc2-core-foundation")]
1093        /// Setter for [`particleMass`][Self::particleMass].
1094        #[unsafe(method(setParticleMass:))]
1095        #[unsafe(method_family = none)]
1096        pub unsafe fn setParticleMass(&self, particle_mass: CGFloat);
1097
1098        #[cfg(feature = "objc2-core-foundation")]
1099        #[unsafe(method(particleMassVariation))]
1100        #[unsafe(method_family = none)]
1101        pub unsafe fn particleMassVariation(&self) -> CGFloat;
1102
1103        #[cfg(feature = "objc2-core-foundation")]
1104        /// Setter for [`particleMassVariation`][Self::particleMassVariation].
1105        #[unsafe(method(setParticleMassVariation:))]
1106        #[unsafe(method_family = none)]
1107        pub unsafe fn setParticleMassVariation(&self, particle_mass_variation: CGFloat);
1108
1109        #[cfg(feature = "objc2-core-foundation")]
1110        #[unsafe(method(particleBounce))]
1111        #[unsafe(method_family = none)]
1112        pub unsafe fn particleBounce(&self) -> CGFloat;
1113
1114        #[cfg(feature = "objc2-core-foundation")]
1115        /// Setter for [`particleBounce`][Self::particleBounce].
1116        #[unsafe(method(setParticleBounce:))]
1117        #[unsafe(method_family = none)]
1118        pub unsafe fn setParticleBounce(&self, particle_bounce: CGFloat);
1119
1120        #[cfg(feature = "objc2-core-foundation")]
1121        #[unsafe(method(particleBounceVariation))]
1122        #[unsafe(method_family = none)]
1123        pub unsafe fn particleBounceVariation(&self) -> CGFloat;
1124
1125        #[cfg(feature = "objc2-core-foundation")]
1126        /// Setter for [`particleBounceVariation`][Self::particleBounceVariation].
1127        #[unsafe(method(setParticleBounceVariation:))]
1128        #[unsafe(method_family = none)]
1129        pub unsafe fn setParticleBounceVariation(&self, particle_bounce_variation: CGFloat);
1130
1131        #[cfg(feature = "objc2-core-foundation")]
1132        #[unsafe(method(particleFriction))]
1133        #[unsafe(method_family = none)]
1134        pub unsafe fn particleFriction(&self) -> CGFloat;
1135
1136        #[cfg(feature = "objc2-core-foundation")]
1137        /// Setter for [`particleFriction`][Self::particleFriction].
1138        #[unsafe(method(setParticleFriction:))]
1139        #[unsafe(method_family = none)]
1140        pub unsafe fn setParticleFriction(&self, particle_friction: CGFloat);
1141
1142        #[cfg(feature = "objc2-core-foundation")]
1143        #[unsafe(method(particleFrictionVariation))]
1144        #[unsafe(method_family = none)]
1145        pub unsafe fn particleFrictionVariation(&self) -> CGFloat;
1146
1147        #[cfg(feature = "objc2-core-foundation")]
1148        /// Setter for [`particleFrictionVariation`][Self::particleFrictionVariation].
1149        #[unsafe(method(setParticleFrictionVariation:))]
1150        #[unsafe(method_family = none)]
1151        pub unsafe fn setParticleFrictionVariation(&self, particle_friction_variation: CGFloat);
1152
1153        #[cfg(feature = "objc2-core-foundation")]
1154        #[unsafe(method(particleCharge))]
1155        #[unsafe(method_family = none)]
1156        pub unsafe fn particleCharge(&self) -> CGFloat;
1157
1158        #[cfg(feature = "objc2-core-foundation")]
1159        /// Setter for [`particleCharge`][Self::particleCharge].
1160        #[unsafe(method(setParticleCharge:))]
1161        #[unsafe(method_family = none)]
1162        pub unsafe fn setParticleCharge(&self, particle_charge: CGFloat);
1163
1164        #[cfg(feature = "objc2-core-foundation")]
1165        #[unsafe(method(particleChargeVariation))]
1166        #[unsafe(method_family = none)]
1167        pub unsafe fn particleChargeVariation(&self) -> CGFloat;
1168
1169        #[cfg(feature = "objc2-core-foundation")]
1170        /// Setter for [`particleChargeVariation`][Self::particleChargeVariation].
1171        #[unsafe(method(setParticleChargeVariation:))]
1172        #[unsafe(method_family = none)]
1173        pub unsafe fn setParticleChargeVariation(&self, particle_charge_variation: CGFloat);
1174
1175        #[cfg(feature = "objc2-core-foundation")]
1176        #[unsafe(method(dampingFactor))]
1177        #[unsafe(method_family = none)]
1178        pub unsafe fn dampingFactor(&self) -> CGFloat;
1179
1180        #[cfg(feature = "objc2-core-foundation")]
1181        /// Setter for [`dampingFactor`][Self::dampingFactor].
1182        #[unsafe(method(setDampingFactor:))]
1183        #[unsafe(method_family = none)]
1184        pub unsafe fn setDampingFactor(&self, damping_factor: CGFloat);
1185
1186        #[cfg(feature = "objc2-core-foundation")]
1187        #[unsafe(method(speedFactor))]
1188        #[unsafe(method_family = none)]
1189        pub unsafe fn speedFactor(&self) -> CGFloat;
1190
1191        #[cfg(feature = "objc2-core-foundation")]
1192        /// Setter for [`speedFactor`][Self::speedFactor].
1193        #[unsafe(method(setSpeedFactor:))]
1194        #[unsafe(method_family = none)]
1195        pub unsafe fn setSpeedFactor(&self, speed_factor: CGFloat);
1196
1197        #[cfg(feature = "objc2-core-foundation")]
1198        #[unsafe(method(stretchFactor))]
1199        #[unsafe(method_family = none)]
1200        pub unsafe fn stretchFactor(&self) -> CGFloat;
1201
1202        #[cfg(feature = "objc2-core-foundation")]
1203        /// Setter for [`stretchFactor`][Self::stretchFactor].
1204        #[unsafe(method(setStretchFactor:))]
1205        #[unsafe(method_family = none)]
1206        pub unsafe fn setStretchFactor(&self, stretch_factor: CGFloat);
1207
1208        #[cfg(feature = "objc2-core-foundation")]
1209        #[unsafe(method(fresnelExponent))]
1210        #[unsafe(method_family = none)]
1211        pub unsafe fn fresnelExponent(&self) -> CGFloat;
1212
1213        #[cfg(feature = "objc2-core-foundation")]
1214        /// Setter for [`fresnelExponent`][Self::fresnelExponent].
1215        #[unsafe(method(setFresnelExponent:))]
1216        #[unsafe(method_family = none)]
1217        pub unsafe fn setFresnelExponent(&self, fresnel_exponent: CGFloat);
1218
1219        /// Determines whether the receiver writes to the depth buffer when rendered. Defaults to NO.
1220        #[unsafe(method(writesToDepthBuffer))]
1221        #[unsafe(method_family = none)]
1222        pub unsafe fn writesToDepthBuffer(&self) -> bool;
1223
1224        /// Setter for [`writesToDepthBuffer`][Self::writesToDepthBuffer].
1225        #[unsafe(method(setWritesToDepthBuffer:))]
1226        #[unsafe(method_family = none)]
1227        pub unsafe fn setWritesToDepthBuffer(&self, writes_to_depth_buffer: bool);
1228
1229        #[unsafe(method(propertyControllers))]
1230        #[unsafe(method_family = none)]
1231        pub unsafe fn propertyControllers(
1232            &self,
1233        ) -> Option<Retained<NSDictionary<SCNParticleProperty, SCNParticlePropertyController>>>;
1234
1235        /// Setter for [`propertyControllers`][Self::propertyControllers].
1236        ///
1237        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
1238        #[unsafe(method(setPropertyControllers:))]
1239        #[unsafe(method_family = none)]
1240        pub unsafe fn setPropertyControllers(
1241            &self,
1242            property_controllers: Option<
1243                &NSDictionary<SCNParticleProperty, SCNParticlePropertyController>,
1244            >,
1245        );
1246
1247        #[unsafe(method(reset))]
1248        #[unsafe(method_family = none)]
1249        pub unsafe fn reset(&self);
1250
1251        #[cfg(feature = "block2")]
1252        /// # Safety
1253        ///
1254        /// `block` must be a valid pointer.
1255        #[unsafe(method(handleEvent:forProperties:withBlock:))]
1256        #[unsafe(method_family = none)]
1257        pub unsafe fn handleEvent_forProperties_withBlock(
1258            &self,
1259            event: SCNParticleEvent,
1260            properties: &NSArray<SCNParticleProperty>,
1261            block: SCNParticleEventBlock,
1262        );
1263
1264        #[cfg(feature = "block2")]
1265        /// # Safety
1266        ///
1267        /// `block` must be a valid pointer.
1268        #[unsafe(method(addModifierForProperties:atStage:withBlock:))]
1269        #[unsafe(method_family = none)]
1270        pub unsafe fn addModifierForProperties_atStage_withBlock(
1271            &self,
1272            properties: &NSArray<SCNParticleProperty>,
1273            stage: SCNParticleModifierStage,
1274            block: SCNParticleModifierBlock,
1275        );
1276
1277        #[unsafe(method(removeModifiersOfStage:))]
1278        #[unsafe(method_family = none)]
1279        pub unsafe fn removeModifiersOfStage(&self, stage: SCNParticleModifierStage);
1280
1281        #[unsafe(method(removeAllModifiers))]
1282        #[unsafe(method_family = none)]
1283        pub unsafe fn removeAllModifiers(&self);
1284    );
1285}
1286
1287/// Methods declared on superclass `NSObject`.
1288impl SCNParticleSystem {
1289    extern_methods!(
1290        #[unsafe(method(init))]
1291        #[unsafe(method_family = init)]
1292        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1293
1294        #[unsafe(method(new))]
1295        #[unsafe(method_family = new)]
1296        pub unsafe fn new() -> Retained<Self>;
1297    );
1298}
1299
1300/// SCNParticleSystemSupport.
1301#[cfg(feature = "SCNNode")]
1302impl SCNNode {
1303    extern_methods!(
1304        #[unsafe(method(addParticleSystem:))]
1305        #[unsafe(method_family = none)]
1306        pub unsafe fn addParticleSystem(&self, system: &SCNParticleSystem);
1307
1308        #[unsafe(method(removeAllParticleSystems))]
1309        #[unsafe(method_family = none)]
1310        pub unsafe fn removeAllParticleSystems(&self);
1311
1312        #[unsafe(method(removeParticleSystem:))]
1313        #[unsafe(method_family = none)]
1314        pub unsafe fn removeParticleSystem(&self, system: &SCNParticleSystem);
1315
1316        #[unsafe(method(particleSystems))]
1317        #[unsafe(method_family = none)]
1318        pub unsafe fn particleSystems(&self) -> Option<Retained<NSArray<SCNParticleSystem>>>;
1319    );
1320}
1321
1322/// SCNParticleSystemSupport.
1323#[cfg(feature = "SCNScene")]
1324impl SCNScene {
1325    extern_methods!(
1326        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-quartz-core"))]
1327        #[cfg(not(target_os = "watchos"))]
1328        #[unsafe(method(addParticleSystem:withTransform:))]
1329        #[unsafe(method_family = none)]
1330        pub unsafe fn addParticleSystem_withTransform(
1331            &self,
1332            system: &SCNParticleSystem,
1333            transform: SCNMatrix4,
1334        );
1335
1336        #[unsafe(method(removeAllParticleSystems))]
1337        #[unsafe(method_family = none)]
1338        pub unsafe fn removeAllParticleSystems(&self);
1339
1340        #[unsafe(method(removeParticleSystem:))]
1341        #[unsafe(method_family = none)]
1342        pub unsafe fn removeParticleSystem(&self, system: &SCNParticleSystem);
1343
1344        #[unsafe(method(particleSystems))]
1345        #[unsafe(method_family = none)]
1346        pub unsafe fn particleSystems(&self) -> Option<Retained<NSArray<SCNParticleSystem>>>;
1347    );
1348}