1 /**
2 General-purpose area node for detection and 3D physics influence.
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.area;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.traits;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.globalenums;
22 import godot.object;
23 import godot.classdb;
24 import godot.collisionobject;
25 import godot.node;
26 /**
27 General-purpose area node for detection and 3D physics influence.
28 
29 3D area that detects $(D CollisionObject) nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping).
30 */
31 @GodotBaseClass struct Area
32 {
33 	package(godot) enum string _GODOT_internal_name = "Area";
34 public:
35 @nogc nothrow:
36 	union { /** */ godot_object _godot_object; /** */ CollisionObject _GODOT_base; }
37 	alias _GODOT_base this;
38 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
39 	package(godot) __gshared bool _classBindingInitialized = false;
40 	package(godot) static struct GDNativeClassBinding
41 	{
42 		__gshared:
43 		@GodotName("_area_enter_tree") GodotMethod!(void, long) _areaEnterTree;
44 		@GodotName("_area_exit_tree") GodotMethod!(void, long) _areaExitTree;
45 		@GodotName("_area_inout") GodotMethod!(void, long, RID, long, long, long) _areaInout;
46 		@GodotName("_body_enter_tree") GodotMethod!(void, long) _bodyEnterTree;
47 		@GodotName("_body_exit_tree") GodotMethod!(void, long) _bodyExitTree;
48 		@GodotName("_body_inout") GodotMethod!(void, long, RID, long, long, long) _bodyInout;
49 		@GodotName("get_angular_damp") GodotMethod!(double) getAngularDamp;
50 		@GodotName("get_audio_bus") GodotMethod!(String) getAudioBus;
51 		@GodotName("get_collision_layer") GodotMethod!(long) getCollisionLayer;
52 		@GodotName("get_collision_layer_bit") GodotMethod!(bool, long) getCollisionLayerBit;
53 		@GodotName("get_collision_mask") GodotMethod!(long) getCollisionMask;
54 		@GodotName("get_collision_mask_bit") GodotMethod!(bool, long) getCollisionMaskBit;
55 		@GodotName("get_gravity") GodotMethod!(double) getGravity;
56 		@GodotName("get_gravity_distance_scale") GodotMethod!(double) getGravityDistanceScale;
57 		@GodotName("get_gravity_vector") GodotMethod!(Vector3) getGravityVector;
58 		@GodotName("get_linear_damp") GodotMethod!(double) getLinearDamp;
59 		@GodotName("get_overlapping_areas") GodotMethod!(Array) getOverlappingAreas;
60 		@GodotName("get_overlapping_bodies") GodotMethod!(Array) getOverlappingBodies;
61 		@GodotName("get_priority") GodotMethod!(double) getPriority;
62 		@GodotName("get_reverb_amount") GodotMethod!(double) getReverbAmount;
63 		@GodotName("get_reverb_bus") GodotMethod!(String) getReverbBus;
64 		@GodotName("get_reverb_uniformity") GodotMethod!(double) getReverbUniformity;
65 		@GodotName("get_space_override_mode") GodotMethod!(Area.SpaceOverride) getSpaceOverrideMode;
66 		@GodotName("is_gravity_a_point") GodotMethod!(bool) isGravityAPoint;
67 		@GodotName("is_monitorable") GodotMethod!(bool) isMonitorable;
68 		@GodotName("is_monitoring") GodotMethod!(bool) isMonitoring;
69 		@GodotName("is_overriding_audio_bus") GodotMethod!(bool) isOverridingAudioBus;
70 		@GodotName("is_using_reverb_bus") GodotMethod!(bool) isUsingReverbBus;
71 		@GodotName("overlaps_area") GodotMethod!(bool, Node) overlapsArea;
72 		@GodotName("overlaps_body") GodotMethod!(bool, Node) overlapsBody;
73 		@GodotName("set_angular_damp") GodotMethod!(void, double) setAngularDamp;
74 		@GodotName("set_audio_bus") GodotMethod!(void, String) setAudioBus;
75 		@GodotName("set_audio_bus_override") GodotMethod!(void, bool) setAudioBusOverride;
76 		@GodotName("set_collision_layer") GodotMethod!(void, long) setCollisionLayer;
77 		@GodotName("set_collision_layer_bit") GodotMethod!(void, long, bool) setCollisionLayerBit;
78 		@GodotName("set_collision_mask") GodotMethod!(void, long) setCollisionMask;
79 		@GodotName("set_collision_mask_bit") GodotMethod!(void, long, bool) setCollisionMaskBit;
80 		@GodotName("set_gravity") GodotMethod!(void, double) setGravity;
81 		@GodotName("set_gravity_distance_scale") GodotMethod!(void, double) setGravityDistanceScale;
82 		@GodotName("set_gravity_is_point") GodotMethod!(void, bool) setGravityIsPoint;
83 		@GodotName("set_gravity_vector") GodotMethod!(void, Vector3) setGravityVector;
84 		@GodotName("set_linear_damp") GodotMethod!(void, double) setLinearDamp;
85 		@GodotName("set_monitorable") GodotMethod!(void, bool) setMonitorable;
86 		@GodotName("set_monitoring") GodotMethod!(void, bool) setMonitoring;
87 		@GodotName("set_priority") GodotMethod!(void, double) setPriority;
88 		@GodotName("set_reverb_amount") GodotMethod!(void, double) setReverbAmount;
89 		@GodotName("set_reverb_bus") GodotMethod!(void, String) setReverbBus;
90 		@GodotName("set_reverb_uniformity") GodotMethod!(void, double) setReverbUniformity;
91 		@GodotName("set_space_override_mode") GodotMethod!(void, long) setSpaceOverrideMode;
92 		@GodotName("set_use_reverb_bus") GodotMethod!(void, bool) setUseReverbBus;
93 	}
94 	/// 
95 	pragma(inline, true) bool opEquals(in Area other) const
96 	{ return _godot_object.ptr is other._godot_object.ptr; }
97 	/// 
98 	pragma(inline, true) typeof(null) opAssign(typeof(null) n)
99 	{ _godot_object.ptr = n; return null; }
100 	/// 
101 	pragma(inline, true) bool opEquals(typeof(null) n) const
102 	{ return _godot_object.ptr is n; }
103 	/// 
104 	size_t toHash() const @trusted { return cast(size_t)_godot_object.ptr; }
105 	mixin baseCasts;
106 	/// Construct a new instance of Area.
107 	/// Note: use `memnew!Area` instead.
108 	static Area _new()
109 	{
110 		static godot_class_constructor constructor;
111 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("Area");
112 		if(constructor is null) return typeof(this).init;
113 		return cast(Area)(constructor());
114 	}
115 	@disable new(size_t s);
116 	/// 
117 	enum SpaceOverride : int
118 	{
119 		/**
120 		This area does not affect gravity/damping.
121 		*/
122 		spaceOverrideDisabled = 0,
123 		/**
124 		This area adds its gravity/damping values to whatever has been calculated so far (in $(D priority) order).
125 		*/
126 		spaceOverrideCombine = 1,
127 		/**
128 		This area adds its gravity/damping values to whatever has been calculated so far (in $(D priority) order), ignoring any lower priority areas.
129 		*/
130 		spaceOverrideCombineReplace = 2,
131 		/**
132 		This area replaces any gravity/damping, even the defaults, ignoring any lower priority areas.
133 		*/
134 		spaceOverrideReplace = 3,
135 		/**
136 		This area replaces any gravity/damping calculated so far (in $(D priority) order), but keeps calculating the rest of the areas.
137 		*/
138 		spaceOverrideReplaceCombine = 4,
139 	}
140 	/// 
141 	enum Constants : int
142 	{
143 		spaceOverrideDisabled = 0,
144 		spaceOverrideCombine = 1,
145 		spaceOverrideCombineReplace = 2,
146 		spaceOverrideReplace = 3,
147 		spaceOverrideReplaceCombine = 4,
148 	}
149 	/**
150 	
151 	*/
152 	void _areaEnterTree(in long id)
153 	{
154 		Array _GODOT_args = Array.make();
155 		_GODOT_args.append(id);
156 		String _GODOT_method_name = String("_area_enter_tree");
157 		this.callv(_GODOT_method_name, _GODOT_args);
158 	}
159 	/**
160 	
161 	*/
162 	void _areaExitTree(in long id)
163 	{
164 		Array _GODOT_args = Array.make();
165 		_GODOT_args.append(id);
166 		String _GODOT_method_name = String("_area_exit_tree");
167 		this.callv(_GODOT_method_name, _GODOT_args);
168 	}
169 	/**
170 	
171 	*/
172 	void _areaInout(in long arg0, in RID arg1, in long arg2, in long arg3, in long arg4)
173 	{
174 		Array _GODOT_args = Array.make();
175 		_GODOT_args.append(arg0);
176 		_GODOT_args.append(arg1);
177 		_GODOT_args.append(arg2);
178 		_GODOT_args.append(arg3);
179 		_GODOT_args.append(arg4);
180 		String _GODOT_method_name = String("_area_inout");
181 		this.callv(_GODOT_method_name, _GODOT_args);
182 	}
183 	/**
184 	
185 	*/
186 	void _bodyEnterTree(in long id)
187 	{
188 		Array _GODOT_args = Array.make();
189 		_GODOT_args.append(id);
190 		String _GODOT_method_name = String("_body_enter_tree");
191 		this.callv(_GODOT_method_name, _GODOT_args);
192 	}
193 	/**
194 	
195 	*/
196 	void _bodyExitTree(in long id)
197 	{
198 		Array _GODOT_args = Array.make();
199 		_GODOT_args.append(id);
200 		String _GODOT_method_name = String("_body_exit_tree");
201 		this.callv(_GODOT_method_name, _GODOT_args);
202 	}
203 	/**
204 	
205 	*/
206 	void _bodyInout(in long arg0, in RID arg1, in long arg2, in long arg3, in long arg4)
207 	{
208 		Array _GODOT_args = Array.make();
209 		_GODOT_args.append(arg0);
210 		_GODOT_args.append(arg1);
211 		_GODOT_args.append(arg2);
212 		_GODOT_args.append(arg3);
213 		_GODOT_args.append(arg4);
214 		String _GODOT_method_name = String("_body_inout");
215 		this.callv(_GODOT_method_name, _GODOT_args);
216 	}
217 	/**
218 	
219 	*/
220 	double getAngularDamp() const
221 	{
222 		checkClassBinding!(typeof(this))();
223 		return ptrcall!(double)(GDNativeClassBinding.getAngularDamp, _godot_object);
224 	}
225 	/**
226 	
227 	*/
228 	String getAudioBus() const
229 	{
230 		checkClassBinding!(typeof(this))();
231 		return ptrcall!(String)(GDNativeClassBinding.getAudioBus, _godot_object);
232 	}
233 	/**
234 	
235 	*/
236 	long getCollisionLayer() const
237 	{
238 		checkClassBinding!(typeof(this))();
239 		return ptrcall!(long)(GDNativeClassBinding.getCollisionLayer, _godot_object);
240 	}
241 	/**
242 	Returns an individual bit on the layer mask.
243 	*/
244 	bool getCollisionLayerBit(in long bit) const
245 	{
246 		checkClassBinding!(typeof(this))();
247 		return ptrcall!(bool)(GDNativeClassBinding.getCollisionLayerBit, _godot_object, bit);
248 	}
249 	/**
250 	
251 	*/
252 	long getCollisionMask() const
253 	{
254 		checkClassBinding!(typeof(this))();
255 		return ptrcall!(long)(GDNativeClassBinding.getCollisionMask, _godot_object);
256 	}
257 	/**
258 	Returns an individual bit on the collision mask.
259 	*/
260 	bool getCollisionMaskBit(in long bit) const
261 	{
262 		checkClassBinding!(typeof(this))();
263 		return ptrcall!(bool)(GDNativeClassBinding.getCollisionMaskBit, _godot_object, bit);
264 	}
265 	/**
266 	
267 	*/
268 	double getGravity() const
269 	{
270 		checkClassBinding!(typeof(this))();
271 		return ptrcall!(double)(GDNativeClassBinding.getGravity, _godot_object);
272 	}
273 	/**
274 	
275 	*/
276 	double getGravityDistanceScale() const
277 	{
278 		checkClassBinding!(typeof(this))();
279 		return ptrcall!(double)(GDNativeClassBinding.getGravityDistanceScale, _godot_object);
280 	}
281 	/**
282 	
283 	*/
284 	Vector3 getGravityVector() const
285 	{
286 		checkClassBinding!(typeof(this))();
287 		return ptrcall!(Vector3)(GDNativeClassBinding.getGravityVector, _godot_object);
288 	}
289 	/**
290 	
291 	*/
292 	double getLinearDamp() const
293 	{
294 		checkClassBinding!(typeof(this))();
295 		return ptrcall!(double)(GDNativeClassBinding.getLinearDamp, _godot_object);
296 	}
297 	/**
298 	Returns a list of intersecting $(D Area)s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
299 	*/
300 	Array getOverlappingAreas() const
301 	{
302 		checkClassBinding!(typeof(this))();
303 		return ptrcall!(Array)(GDNativeClassBinding.getOverlappingAreas, _godot_object);
304 	}
305 	/**
306 	Returns a list of intersecting $(D PhysicsBody)s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
307 	*/
308 	Array getOverlappingBodies() const
309 	{
310 		checkClassBinding!(typeof(this))();
311 		return ptrcall!(Array)(GDNativeClassBinding.getOverlappingBodies, _godot_object);
312 	}
313 	/**
314 	
315 	*/
316 	double getPriority() const
317 	{
318 		checkClassBinding!(typeof(this))();
319 		return ptrcall!(double)(GDNativeClassBinding.getPriority, _godot_object);
320 	}
321 	/**
322 	
323 	*/
324 	double getReverbAmount() const
325 	{
326 		checkClassBinding!(typeof(this))();
327 		return ptrcall!(double)(GDNativeClassBinding.getReverbAmount, _godot_object);
328 	}
329 	/**
330 	
331 	*/
332 	String getReverbBus() const
333 	{
334 		checkClassBinding!(typeof(this))();
335 		return ptrcall!(String)(GDNativeClassBinding.getReverbBus, _godot_object);
336 	}
337 	/**
338 	
339 	*/
340 	double getReverbUniformity() const
341 	{
342 		checkClassBinding!(typeof(this))();
343 		return ptrcall!(double)(GDNativeClassBinding.getReverbUniformity, _godot_object);
344 	}
345 	/**
346 	
347 	*/
348 	Area.SpaceOverride getSpaceOverrideMode() const
349 	{
350 		checkClassBinding!(typeof(this))();
351 		return ptrcall!(Area.SpaceOverride)(GDNativeClassBinding.getSpaceOverrideMode, _godot_object);
352 	}
353 	/**
354 	
355 	*/
356 	bool isGravityAPoint() const
357 	{
358 		checkClassBinding!(typeof(this))();
359 		return ptrcall!(bool)(GDNativeClassBinding.isGravityAPoint, _godot_object);
360 	}
361 	/**
362 	
363 	*/
364 	bool isMonitorable() const
365 	{
366 		checkClassBinding!(typeof(this))();
367 		return ptrcall!(bool)(GDNativeClassBinding.isMonitorable, _godot_object);
368 	}
369 	/**
370 	
371 	*/
372 	bool isMonitoring() const
373 	{
374 		checkClassBinding!(typeof(this))();
375 		return ptrcall!(bool)(GDNativeClassBinding.isMonitoring, _godot_object);
376 	}
377 	/**
378 	
379 	*/
380 	bool isOverridingAudioBus() const
381 	{
382 		checkClassBinding!(typeof(this))();
383 		return ptrcall!(bool)(GDNativeClassBinding.isOverridingAudioBus, _godot_object);
384 	}
385 	/**
386 	
387 	*/
388 	bool isUsingReverbBus() const
389 	{
390 		checkClassBinding!(typeof(this))();
391 		return ptrcall!(bool)(GDNativeClassBinding.isUsingReverbBus, _godot_object);
392 	}
393 	/**
394 	If `true`, the given area overlaps the Area.
395 	$(B Note:) The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
396 	*/
397 	bool overlapsArea(Node area) const
398 	{
399 		checkClassBinding!(typeof(this))();
400 		return ptrcall!(bool)(GDNativeClassBinding.overlapsArea, _godot_object, area);
401 	}
402 	/**
403 	If `true`, the given physics body overlaps the Area.
404 	$(B Note:) The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
405 	The `body` argument can either be a $(D PhysicsBody) or a $(D GridMap) instance (while GridMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
406 	*/
407 	bool overlapsBody(Node _body) const
408 	{
409 		checkClassBinding!(typeof(this))();
410 		return ptrcall!(bool)(GDNativeClassBinding.overlapsBody, _godot_object, _body);
411 	}
412 	/**
413 	
414 	*/
415 	void setAngularDamp(in double angular_damp)
416 	{
417 		checkClassBinding!(typeof(this))();
418 		ptrcall!(void)(GDNativeClassBinding.setAngularDamp, _godot_object, angular_damp);
419 	}
420 	/**
421 	
422 	*/
423 	void setAudioBus(in String name)
424 	{
425 		checkClassBinding!(typeof(this))();
426 		ptrcall!(void)(GDNativeClassBinding.setAudioBus, _godot_object, name);
427 	}
428 	/**
429 	
430 	*/
431 	void setAudioBusOverride(in bool enable)
432 	{
433 		checkClassBinding!(typeof(this))();
434 		ptrcall!(void)(GDNativeClassBinding.setAudioBusOverride, _godot_object, enable);
435 	}
436 	/**
437 	
438 	*/
439 	void setCollisionLayer(in long collision_layer)
440 	{
441 		checkClassBinding!(typeof(this))();
442 		ptrcall!(void)(GDNativeClassBinding.setCollisionLayer, _godot_object, collision_layer);
443 	}
444 	/**
445 	Set/clear individual bits on the layer mask. This simplifies editing this $(D Area)'s layers.
446 	*/
447 	void setCollisionLayerBit(in long bit, in bool value)
448 	{
449 		checkClassBinding!(typeof(this))();
450 		ptrcall!(void)(GDNativeClassBinding.setCollisionLayerBit, _godot_object, bit, value);
451 	}
452 	/**
453 	
454 	*/
455 	void setCollisionMask(in long collision_mask)
456 	{
457 		checkClassBinding!(typeof(this))();
458 		ptrcall!(void)(GDNativeClassBinding.setCollisionMask, _godot_object, collision_mask);
459 	}
460 	/**
461 	Set/clear individual bits on the collision mask. This simplifies editing which $(D Area) layers this $(D Area) scans.
462 	*/
463 	void setCollisionMaskBit(in long bit, in bool value)
464 	{
465 		checkClassBinding!(typeof(this))();
466 		ptrcall!(void)(GDNativeClassBinding.setCollisionMaskBit, _godot_object, bit, value);
467 	}
468 	/**
469 	
470 	*/
471 	void setGravity(in double gravity)
472 	{
473 		checkClassBinding!(typeof(this))();
474 		ptrcall!(void)(GDNativeClassBinding.setGravity, _godot_object, gravity);
475 	}
476 	/**
477 	
478 	*/
479 	void setGravityDistanceScale(in double distance_scale)
480 	{
481 		checkClassBinding!(typeof(this))();
482 		ptrcall!(void)(GDNativeClassBinding.setGravityDistanceScale, _godot_object, distance_scale);
483 	}
484 	/**
485 	
486 	*/
487 	void setGravityIsPoint(in bool enable)
488 	{
489 		checkClassBinding!(typeof(this))();
490 		ptrcall!(void)(GDNativeClassBinding.setGravityIsPoint, _godot_object, enable);
491 	}
492 	/**
493 	
494 	*/
495 	void setGravityVector(in Vector3 vector)
496 	{
497 		checkClassBinding!(typeof(this))();
498 		ptrcall!(void)(GDNativeClassBinding.setGravityVector, _godot_object, vector);
499 	}
500 	/**
501 	
502 	*/
503 	void setLinearDamp(in double linear_damp)
504 	{
505 		checkClassBinding!(typeof(this))();
506 		ptrcall!(void)(GDNativeClassBinding.setLinearDamp, _godot_object, linear_damp);
507 	}
508 	/**
509 	
510 	*/
511 	void setMonitorable(in bool enable)
512 	{
513 		checkClassBinding!(typeof(this))();
514 		ptrcall!(void)(GDNativeClassBinding.setMonitorable, _godot_object, enable);
515 	}
516 	/**
517 	
518 	*/
519 	void setMonitoring(in bool enable)
520 	{
521 		checkClassBinding!(typeof(this))();
522 		ptrcall!(void)(GDNativeClassBinding.setMonitoring, _godot_object, enable);
523 	}
524 	/**
525 	
526 	*/
527 	void setPriority(in double priority)
528 	{
529 		checkClassBinding!(typeof(this))();
530 		ptrcall!(void)(GDNativeClassBinding.setPriority, _godot_object, priority);
531 	}
532 	/**
533 	
534 	*/
535 	void setReverbAmount(in double amount)
536 	{
537 		checkClassBinding!(typeof(this))();
538 		ptrcall!(void)(GDNativeClassBinding.setReverbAmount, _godot_object, amount);
539 	}
540 	/**
541 	
542 	*/
543 	void setReverbBus(in String name)
544 	{
545 		checkClassBinding!(typeof(this))();
546 		ptrcall!(void)(GDNativeClassBinding.setReverbBus, _godot_object, name);
547 	}
548 	/**
549 	
550 	*/
551 	void setReverbUniformity(in double amount)
552 	{
553 		checkClassBinding!(typeof(this))();
554 		ptrcall!(void)(GDNativeClassBinding.setReverbUniformity, _godot_object, amount);
555 	}
556 	/**
557 	
558 	*/
559 	void setSpaceOverrideMode(in long enable)
560 	{
561 		checkClassBinding!(typeof(this))();
562 		ptrcall!(void)(GDNativeClassBinding.setSpaceOverrideMode, _godot_object, enable);
563 	}
564 	/**
565 	
566 	*/
567 	void setUseReverbBus(in bool enable)
568 	{
569 		checkClassBinding!(typeof(this))();
570 		ptrcall!(void)(GDNativeClassBinding.setUseReverbBus, _godot_object, enable);
571 	}
572 	/**
573 	The rate at which objects stop spinning in this area. Represents the angular velocity lost per second.
574 	See $(D ProjectSettings.physics/3d/defaultAngularDamp) for more details about damping.
575 	*/
576 	@property double angularDamp()
577 	{
578 		return getAngularDamp();
579 	}
580 	/// ditto
581 	@property void angularDamp(double v)
582 	{
583 		setAngularDamp(v);
584 	}
585 	/**
586 	The name of the area's audio bus.
587 	*/
588 	@property String audioBusName()
589 	{
590 		return getAudioBus();
591 	}
592 	/// ditto
593 	@property void audioBusName(String v)
594 	{
595 		setAudioBus(v);
596 	}
597 	/**
598 	If `true`, the area's audio bus overrides the default audio bus.
599 	*/
600 	@property bool audioBusOverride()
601 	{
602 		return isOverridingAudioBus();
603 	}
604 	/// ditto
605 	@property void audioBusOverride(bool v)
606 	{
607 		setAudioBusOverride(v);
608 	}
609 	/**
610 	The area's physics layer(s). Collidable objects can exist in any of 32 different layers. A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See also $(D collisionMask). See $(D url=https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks)Collision layers and masks$(D /url) in the documentation for more information.
611 	*/
612 	@property long collisionLayer()
613 	{
614 		return getCollisionLayer();
615 	}
616 	/// ditto
617 	@property void collisionLayer(long v)
618 	{
619 		setCollisionLayer(v);
620 	}
621 	/**
622 	The physics layers this area scans to determine collision detection. See $(D url=https://docs.godotengine.org/en/3.3/tutorials/physics/physics_introduction.html#collision-layers-and-masks)Collision layers and masks$(D /url) in the documentation for more information.
623 	*/
624 	@property long collisionMask()
625 	{
626 		return getCollisionMask();
627 	}
628 	/// ditto
629 	@property void collisionMask(long v)
630 	{
631 		setCollisionMask(v);
632 	}
633 	/**
634 	The area's gravity intensity (in meters per second squared). This value multiplies the gravity vector. This is useful to alter the force of gravity without altering its direction.
635 	*/
636 	@property double gravity()
637 	{
638 		return getGravity();
639 	}
640 	/// ditto
641 	@property void gravity(double v)
642 	{
643 		setGravity(v);
644 	}
645 	/**
646 	The falloff factor for point gravity. The greater the value, the faster gravity decreases with distance.
647 	*/
648 	@property double gravityDistanceScale()
649 	{
650 		return getGravityDistanceScale();
651 	}
652 	/// ditto
653 	@property void gravityDistanceScale(double v)
654 	{
655 		setGravityDistanceScale(v);
656 	}
657 	/**
658 	If `true`, gravity is calculated from a point (set via $(D gravityVec)). See also $(D spaceOverride).
659 	*/
660 	@property bool gravityPoint()
661 	{
662 		return isGravityAPoint();
663 	}
664 	/// ditto
665 	@property void gravityPoint(bool v)
666 	{
667 		setGravityIsPoint(v);
668 	}
669 	/**
670 	The area's gravity vector (not normalized). If gravity is a point (see $(D gravityPoint)), this will be the point of attraction.
671 	*/
672 	@property Vector3 gravityVec()
673 	{
674 		return getGravityVector();
675 	}
676 	/// ditto
677 	@property void gravityVec(Vector3 v)
678 	{
679 		setGravityVector(v);
680 	}
681 	/**
682 	The rate at which objects stop moving in this area. Represents the linear velocity lost per second.
683 	See $(D ProjectSettings.physics/3d/defaultLinearDamp) for more details about damping.
684 	*/
685 	@property double linearDamp()
686 	{
687 		return getLinearDamp();
688 	}
689 	/// ditto
690 	@property void linearDamp(double v)
691 	{
692 		setLinearDamp(v);
693 	}
694 	/**
695 	If `true`, other monitoring areas can detect this area.
696 	*/
697 	@property bool monitorable()
698 	{
699 		return isMonitorable();
700 	}
701 	/// ditto
702 	@property void monitorable(bool v)
703 	{
704 		setMonitorable(v);
705 	}
706 	/**
707 	If `true`, the area detects bodies or areas entering and exiting it.
708 	*/
709 	@property bool monitoring()
710 	{
711 		return isMonitoring();
712 	}
713 	/// ditto
714 	@property void monitoring(bool v)
715 	{
716 		setMonitoring(v);
717 	}
718 	/**
719 	The area's priority. Higher priority areas are processed first.
720 	*/
721 	@property double priority()
722 	{
723 		return getPriority();
724 	}
725 	/// ditto
726 	@property void priority(double v)
727 	{
728 		setPriority(v);
729 	}
730 	/**
731 	The degree to which this area applies reverb to its associated audio. Ranges from `0` to `1` with `0.1` precision.
732 	*/
733 	@property double reverbBusAmount()
734 	{
735 		return getReverbAmount();
736 	}
737 	/// ditto
738 	@property void reverbBusAmount(double v)
739 	{
740 		setReverbAmount(v);
741 	}
742 	/**
743 	If `true`, the area applies reverb to its associated audio.
744 	*/
745 	@property bool reverbBusEnable()
746 	{
747 		return isUsingReverbBus();
748 	}
749 	/// ditto
750 	@property void reverbBusEnable(bool v)
751 	{
752 		setUseReverbBus(v);
753 	}
754 	/**
755 	The reverb bus name to use for this area's associated audio.
756 	*/
757 	@property String reverbBusName()
758 	{
759 		return getReverbBus();
760 	}
761 	/// ditto
762 	@property void reverbBusName(String v)
763 	{
764 		setReverbBus(v);
765 	}
766 	/**
767 	The degree to which this area's reverb is a uniform effect. Ranges from `0` to `1` with `0.1` precision.
768 	*/
769 	@property double reverbBusUniformity()
770 	{
771 		return getReverbUniformity();
772 	}
773 	/// ditto
774 	@property void reverbBusUniformity(double v)
775 	{
776 		setReverbUniformity(v);
777 	}
778 	/**
779 	Override mode for gravity and damping calculations within this area. See $(D spaceoverride) for possible values.
780 	*/
781 	@property Area.SpaceOverride spaceOverride()
782 	{
783 		return getSpaceOverrideMode();
784 	}
785 	/// ditto
786 	@property void spaceOverride(long v)
787 	{
788 		setSpaceOverrideMode(v);
789 	}
790 }