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