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 }