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 }