1 /** 2 The generic 6-degrees-of-freedom joint can implement a variety of joint types by locking certain axes' rotation or translation. 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.generic6dofjoint; 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.joint; 25 /** 26 The generic 6-degrees-of-freedom joint can implement a variety of joint types by locking certain axes' rotation or translation. 27 28 The first 3 DOF axes are linear axes, which represent translation of Bodies, and the latter 3 DOF axes represent the angular motion. Each axis can be either locked, or limited. 29 */ 30 @GodotBaseClass struct Generic6DOFJoint 31 { 32 package(godot) enum string _GODOT_internal_name = "Generic6DOFJoint"; 33 public: 34 @nogc nothrow: 35 union { /** */ godot_object _godot_object; /** */ Joint _GODOT_base; } 36 alias _GODOT_base this; 37 alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses); 38 package(godot) __gshared bool _classBindingInitialized = false; 39 package(godot) static struct GDNativeClassBinding 40 { 41 __gshared: 42 @GodotName("_get_angular_hi_limit_x") GodotMethod!(double) _getAngularHiLimitX; 43 @GodotName("_get_angular_hi_limit_y") GodotMethod!(double) _getAngularHiLimitY; 44 @GodotName("_get_angular_hi_limit_z") GodotMethod!(double) _getAngularHiLimitZ; 45 @GodotName("_get_angular_lo_limit_x") GodotMethod!(double) _getAngularLoLimitX; 46 @GodotName("_get_angular_lo_limit_y") GodotMethod!(double) _getAngularLoLimitY; 47 @GodotName("_get_angular_lo_limit_z") GodotMethod!(double) _getAngularLoLimitZ; 48 @GodotName("_set_angular_hi_limit_x") GodotMethod!(void, double) _setAngularHiLimitX; 49 @GodotName("_set_angular_hi_limit_y") GodotMethod!(void, double) _setAngularHiLimitY; 50 @GodotName("_set_angular_hi_limit_z") GodotMethod!(void, double) _setAngularHiLimitZ; 51 @GodotName("_set_angular_lo_limit_x") GodotMethod!(void, double) _setAngularLoLimitX; 52 @GodotName("_set_angular_lo_limit_y") GodotMethod!(void, double) _setAngularLoLimitY; 53 @GodotName("_set_angular_lo_limit_z") GodotMethod!(void, double) _setAngularLoLimitZ; 54 @GodotName("get_flag_x") GodotMethod!(bool, long) getFlagX; 55 @GodotName("get_flag_y") GodotMethod!(bool, long) getFlagY; 56 @GodotName("get_flag_z") GodotMethod!(bool, long) getFlagZ; 57 @GodotName("get_param_x") GodotMethod!(double, long) getParamX; 58 @GodotName("get_param_y") GodotMethod!(double, long) getParamY; 59 @GodotName("get_param_z") GodotMethod!(double, long) getParamZ; 60 @GodotName("set_flag_x") GodotMethod!(void, long, bool) setFlagX; 61 @GodotName("set_flag_y") GodotMethod!(void, long, bool) setFlagY; 62 @GodotName("set_flag_z") GodotMethod!(void, long, bool) setFlagZ; 63 @GodotName("set_param_x") GodotMethod!(void, long, double) setParamX; 64 @GodotName("set_param_y") GodotMethod!(void, long, double) setParamY; 65 @GodotName("set_param_z") GodotMethod!(void, long, double) setParamZ; 66 } 67 /// 68 pragma(inline, true) bool opEquals(in Generic6DOFJoint other) const 69 { return _godot_object.ptr is other._godot_object.ptr; } 70 /// 71 pragma(inline, true) typeof(null) opAssign(typeof(null) n) 72 { _godot_object.ptr = n; return null; } 73 /// 74 pragma(inline, true) bool opEquals(typeof(null) n) const 75 { return _godot_object.ptr is n; } 76 /// 77 size_t toHash() const @trusted { return cast(size_t)_godot_object.ptr; } 78 mixin baseCasts; 79 /// Construct a new instance of Generic6DOFJoint. 80 /// Note: use `memnew!Generic6DOFJoint` instead. 81 static Generic6DOFJoint _new() 82 { 83 static godot_class_constructor constructor; 84 if(constructor is null) constructor = _godot_api.godot_get_class_constructor("Generic6DOFJoint"); 85 if(constructor is null) return typeof(this).init; 86 return cast(Generic6DOFJoint)(constructor()); 87 } 88 @disable new(size_t s); 89 /// 90 enum Param : int 91 { 92 /** 93 The minimum difference between the pivot points' axes. 94 */ 95 paramLinearLowerLimit = 0, 96 /** 97 The maximum difference between the pivot points' axes. 98 */ 99 paramLinearUpperLimit = 1, 100 /** 101 A factor applied to the movement across the axes. The lower, the slower the movement. 102 */ 103 paramLinearLimitSoftness = 2, 104 /** 105 The amount of restitution on the axes' movement. The lower, the more momentum gets lost. 106 */ 107 paramLinearRestitution = 3, 108 /** 109 The amount of damping that happens at the linear motion across the axes. 110 */ 111 paramLinearDamping = 4, 112 /** 113 The velocity the linear motor will try to reach. 114 */ 115 paramLinearMotorTargetVelocity = 5, 116 /** 117 The maximum force the linear motor will apply while trying to reach the velocity target. 118 */ 119 paramLinearMotorForceLimit = 6, 120 /** 121 122 */ 123 paramLinearSpringStiffness = 7, 124 /** 125 126 */ 127 paramLinearSpringDamping = 8, 128 /** 129 130 */ 131 paramLinearSpringEquilibriumPoint = 9, 132 /** 133 The minimum rotation in negative direction to break loose and rotate around the axes. 134 */ 135 paramAngularLowerLimit = 10, 136 /** 137 The minimum rotation in positive direction to break loose and rotate around the axes. 138 */ 139 paramAngularUpperLimit = 11, 140 /** 141 The speed of all rotations across the axes. 142 */ 143 paramAngularLimitSoftness = 12, 144 /** 145 The amount of rotational damping across the axes. The lower, the more dampening occurs. 146 */ 147 paramAngularDamping = 13, 148 /** 149 The amount of rotational restitution across the axes. The lower, the more restitution occurs. 150 */ 151 paramAngularRestitution = 14, 152 /** 153 The maximum amount of force that can occur, when rotating around the axes. 154 */ 155 paramAngularForceLimit = 15, 156 /** 157 When rotating across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. 158 */ 159 paramAngularErp = 16, 160 /** 161 Target speed for the motor at the axes. 162 */ 163 paramAngularMotorTargetVelocity = 17, 164 /** 165 Maximum acceleration for the motor at the axes. 166 */ 167 paramAngularMotorForceLimit = 18, 168 /** 169 170 */ 171 paramAngularSpringStiffness = 19, 172 /** 173 174 */ 175 paramAngularSpringDamping = 20, 176 /** 177 178 */ 179 paramAngularSpringEquilibriumPoint = 21, 180 /** 181 Represents the size of the $(D param) enum. 182 */ 183 paramMax = 22, 184 } 185 /// 186 enum Flag : int 187 { 188 /** 189 If enabled, linear motion is possible within the given limits. 190 */ 191 flagEnableLinearLimit = 0, 192 /** 193 If enabled, rotational motion is possible within the given limits. 194 */ 195 flagEnableAngularLimit = 1, 196 /** 197 198 */ 199 flagEnableAngularSpring = 2, 200 /** 201 202 */ 203 flagEnableLinearSpring = 3, 204 /** 205 If enabled, there is a rotational motor across these axes. 206 */ 207 flagEnableMotor = 4, 208 /** 209 If enabled, there is a linear motor across these axes. 210 */ 211 flagEnableLinearMotor = 5, 212 /** 213 Represents the size of the $(D flag) enum. 214 */ 215 flagMax = 6, 216 } 217 /// 218 enum Constants : int 219 { 220 paramLinearLowerLimit = 0, 221 flagEnableLinearLimit = 0, 222 flagEnableAngularLimit = 1, 223 paramLinearUpperLimit = 1, 224 paramLinearLimitSoftness = 2, 225 flagEnableAngularSpring = 2, 226 paramLinearRestitution = 3, 227 flagEnableLinearSpring = 3, 228 flagEnableMotor = 4, 229 paramLinearDamping = 4, 230 flagEnableLinearMotor = 5, 231 paramLinearMotorTargetVelocity = 5, 232 flagMax = 6, 233 paramLinearMotorForceLimit = 6, 234 paramLinearSpringStiffness = 7, 235 paramLinearSpringDamping = 8, 236 paramLinearSpringEquilibriumPoint = 9, 237 paramAngularLowerLimit = 10, 238 paramAngularUpperLimit = 11, 239 paramAngularLimitSoftness = 12, 240 paramAngularDamping = 13, 241 paramAngularRestitution = 14, 242 paramAngularForceLimit = 15, 243 paramAngularErp = 16, 244 paramAngularMotorTargetVelocity = 17, 245 paramAngularMotorForceLimit = 18, 246 paramAngularSpringStiffness = 19, 247 paramAngularSpringDamping = 20, 248 paramAngularSpringEquilibriumPoint = 21, 249 paramMax = 22, 250 } 251 /** 252 253 */ 254 double _getAngularHiLimitX() const 255 { 256 Array _GODOT_args = Array.make(); 257 String _GODOT_method_name = String("_get_angular_hi_limit_x"); 258 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 259 } 260 /** 261 262 */ 263 double _getAngularHiLimitY() const 264 { 265 Array _GODOT_args = Array.make(); 266 String _GODOT_method_name = String("_get_angular_hi_limit_y"); 267 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 268 } 269 /** 270 271 */ 272 double _getAngularHiLimitZ() const 273 { 274 Array _GODOT_args = Array.make(); 275 String _GODOT_method_name = String("_get_angular_hi_limit_z"); 276 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 277 } 278 /** 279 280 */ 281 double _getAngularLoLimitX() const 282 { 283 Array _GODOT_args = Array.make(); 284 String _GODOT_method_name = String("_get_angular_lo_limit_x"); 285 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 286 } 287 /** 288 289 */ 290 double _getAngularLoLimitY() const 291 { 292 Array _GODOT_args = Array.make(); 293 String _GODOT_method_name = String("_get_angular_lo_limit_y"); 294 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 295 } 296 /** 297 298 */ 299 double _getAngularLoLimitZ() const 300 { 301 Array _GODOT_args = Array.make(); 302 String _GODOT_method_name = String("_get_angular_lo_limit_z"); 303 return this.callv(_GODOT_method_name, _GODOT_args).as!(RefOrT!double); 304 } 305 /** 306 307 */ 308 void _setAngularHiLimitX(in double angle) 309 { 310 Array _GODOT_args = Array.make(); 311 _GODOT_args.append(angle); 312 String _GODOT_method_name = String("_set_angular_hi_limit_x"); 313 this.callv(_GODOT_method_name, _GODOT_args); 314 } 315 /** 316 317 */ 318 void _setAngularHiLimitY(in double angle) 319 { 320 Array _GODOT_args = Array.make(); 321 _GODOT_args.append(angle); 322 String _GODOT_method_name = String("_set_angular_hi_limit_y"); 323 this.callv(_GODOT_method_name, _GODOT_args); 324 } 325 /** 326 327 */ 328 void _setAngularHiLimitZ(in double angle) 329 { 330 Array _GODOT_args = Array.make(); 331 _GODOT_args.append(angle); 332 String _GODOT_method_name = String("_set_angular_hi_limit_z"); 333 this.callv(_GODOT_method_name, _GODOT_args); 334 } 335 /** 336 337 */ 338 void _setAngularLoLimitX(in double angle) 339 { 340 Array _GODOT_args = Array.make(); 341 _GODOT_args.append(angle); 342 String _GODOT_method_name = String("_set_angular_lo_limit_x"); 343 this.callv(_GODOT_method_name, _GODOT_args); 344 } 345 /** 346 347 */ 348 void _setAngularLoLimitY(in double angle) 349 { 350 Array _GODOT_args = Array.make(); 351 _GODOT_args.append(angle); 352 String _GODOT_method_name = String("_set_angular_lo_limit_y"); 353 this.callv(_GODOT_method_name, _GODOT_args); 354 } 355 /** 356 357 */ 358 void _setAngularLoLimitZ(in double angle) 359 { 360 Array _GODOT_args = Array.make(); 361 _GODOT_args.append(angle); 362 String _GODOT_method_name = String("_set_angular_lo_limit_z"); 363 this.callv(_GODOT_method_name, _GODOT_args); 364 } 365 /** 366 367 */ 368 bool getFlagX(in long flag) const 369 { 370 checkClassBinding!(typeof(this))(); 371 return ptrcall!(bool)(GDNativeClassBinding.getFlagX, _godot_object, flag); 372 } 373 /** 374 375 */ 376 bool getFlagY(in long flag) const 377 { 378 checkClassBinding!(typeof(this))(); 379 return ptrcall!(bool)(GDNativeClassBinding.getFlagY, _godot_object, flag); 380 } 381 /** 382 383 */ 384 bool getFlagZ(in long flag) const 385 { 386 checkClassBinding!(typeof(this))(); 387 return ptrcall!(bool)(GDNativeClassBinding.getFlagZ, _godot_object, flag); 388 } 389 /** 390 391 */ 392 double getParamX(in long param) const 393 { 394 checkClassBinding!(typeof(this))(); 395 return ptrcall!(double)(GDNativeClassBinding.getParamX, _godot_object, param); 396 } 397 /** 398 399 */ 400 double getParamY(in long param) const 401 { 402 checkClassBinding!(typeof(this))(); 403 return ptrcall!(double)(GDNativeClassBinding.getParamY, _godot_object, param); 404 } 405 /** 406 407 */ 408 double getParamZ(in long param) const 409 { 410 checkClassBinding!(typeof(this))(); 411 return ptrcall!(double)(GDNativeClassBinding.getParamZ, _godot_object, param); 412 } 413 /** 414 415 */ 416 void setFlagX(in long flag, in bool value) 417 { 418 checkClassBinding!(typeof(this))(); 419 ptrcall!(void)(GDNativeClassBinding.setFlagX, _godot_object, flag, value); 420 } 421 /** 422 423 */ 424 void setFlagY(in long flag, in bool value) 425 { 426 checkClassBinding!(typeof(this))(); 427 ptrcall!(void)(GDNativeClassBinding.setFlagY, _godot_object, flag, value); 428 } 429 /** 430 431 */ 432 void setFlagZ(in long flag, in bool value) 433 { 434 checkClassBinding!(typeof(this))(); 435 ptrcall!(void)(GDNativeClassBinding.setFlagZ, _godot_object, flag, value); 436 } 437 /** 438 439 */ 440 void setParamX(in long param, in double value) 441 { 442 checkClassBinding!(typeof(this))(); 443 ptrcall!(void)(GDNativeClassBinding.setParamX, _godot_object, param, value); 444 } 445 /** 446 447 */ 448 void setParamY(in long param, in double value) 449 { 450 checkClassBinding!(typeof(this))(); 451 ptrcall!(void)(GDNativeClassBinding.setParamY, _godot_object, param, value); 452 } 453 /** 454 455 */ 456 void setParamZ(in long param, in double value) 457 { 458 checkClassBinding!(typeof(this))(); 459 ptrcall!(void)(GDNativeClassBinding.setParamZ, _godot_object, param, value); 460 } 461 /** 462 The amount of rotational damping across the X axis. 463 The lower, the longer an impulse from one side takes to travel to the other side. 464 */ 465 @property double angularLimitXDamping() 466 { 467 return getParamX(13); 468 } 469 /// ditto 470 @property void angularLimitXDamping(double v) 471 { 472 setParamX(13, v); 473 } 474 /** 475 If `true`, rotation across the X axis is limited. 476 */ 477 @property bool angularLimitXEnabled() 478 { 479 return getFlagX(1); 480 } 481 /// ditto 482 @property void angularLimitXEnabled(bool v) 483 { 484 setFlagX(1, v); 485 } 486 /** 487 When rotating across the X axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. 488 */ 489 @property double angularLimitXErp() 490 { 491 return getParamX(16); 492 } 493 /// ditto 494 @property void angularLimitXErp(double v) 495 { 496 setParamX(16, v); 497 } 498 /** 499 The maximum amount of force that can occur, when rotating around the X axis. 500 */ 501 @property double angularLimitXForceLimit() 502 { 503 return getParamX(15); 504 } 505 /// ditto 506 @property void angularLimitXForceLimit(double v) 507 { 508 setParamX(15, v); 509 } 510 /** 511 The minimum rotation in negative direction to break loose and rotate around the X axis. 512 */ 513 @property double angularLimitXLowerAngle() 514 { 515 return _getAngularLoLimitX(); 516 } 517 /// ditto 518 @property void angularLimitXLowerAngle(double v) 519 { 520 _setAngularLoLimitX(v); 521 } 522 /** 523 The amount of rotational restitution across the X axis. The lower, the more restitution occurs. 524 */ 525 @property double angularLimitXRestitution() 526 { 527 return getParamX(14); 528 } 529 /// ditto 530 @property void angularLimitXRestitution(double v) 531 { 532 setParamX(14, v); 533 } 534 /** 535 The speed of all rotations across the X axis. 536 */ 537 @property double angularLimitXSoftness() 538 { 539 return getParamX(12); 540 } 541 /// ditto 542 @property void angularLimitXSoftness(double v) 543 { 544 setParamX(12, v); 545 } 546 /** 547 The minimum rotation in positive direction to break loose and rotate around the X axis. 548 */ 549 @property double angularLimitXUpperAngle() 550 { 551 return _getAngularHiLimitX(); 552 } 553 /// ditto 554 @property void angularLimitXUpperAngle(double v) 555 { 556 _setAngularHiLimitX(v); 557 } 558 /** 559 The amount of rotational damping across the Y axis. The lower, the more dampening occurs. 560 */ 561 @property double angularLimitYDamping() 562 { 563 return getParamY(13); 564 } 565 /// ditto 566 @property void angularLimitYDamping(double v) 567 { 568 setParamY(13, v); 569 } 570 /** 571 If `true`, rotation across the Y axis is limited. 572 */ 573 @property bool angularLimitYEnabled() 574 { 575 return getFlagY(1); 576 } 577 /// ditto 578 @property void angularLimitYEnabled(bool v) 579 { 580 setFlagY(1, v); 581 } 582 /** 583 When rotating across the Y axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. 584 */ 585 @property double angularLimitYErp() 586 { 587 return getParamY(16); 588 } 589 /// ditto 590 @property void angularLimitYErp(double v) 591 { 592 setParamY(16, v); 593 } 594 /** 595 The maximum amount of force that can occur, when rotating around the Y axis. 596 */ 597 @property double angularLimitYForceLimit() 598 { 599 return getParamY(15); 600 } 601 /// ditto 602 @property void angularLimitYForceLimit(double v) 603 { 604 setParamY(15, v); 605 } 606 /** 607 The minimum rotation in negative direction to break loose and rotate around the Y axis. 608 */ 609 @property double angularLimitYLowerAngle() 610 { 611 return _getAngularLoLimitY(); 612 } 613 /// ditto 614 @property void angularLimitYLowerAngle(double v) 615 { 616 _setAngularLoLimitY(v); 617 } 618 /** 619 The amount of rotational restitution across the Y axis. The lower, the more restitution occurs. 620 */ 621 @property double angularLimitYRestitution() 622 { 623 return getParamY(14); 624 } 625 /// ditto 626 @property void angularLimitYRestitution(double v) 627 { 628 setParamY(14, v); 629 } 630 /** 631 The speed of all rotations across the Y axis. 632 */ 633 @property double angularLimitYSoftness() 634 { 635 return getParamY(12); 636 } 637 /// ditto 638 @property void angularLimitYSoftness(double v) 639 { 640 setParamY(12, v); 641 } 642 /** 643 The minimum rotation in positive direction to break loose and rotate around the Y axis. 644 */ 645 @property double angularLimitYUpperAngle() 646 { 647 return _getAngularHiLimitY(); 648 } 649 /// ditto 650 @property void angularLimitYUpperAngle(double v) 651 { 652 _setAngularHiLimitY(v); 653 } 654 /** 655 The amount of rotational damping across the Z axis. The lower, the more dampening occurs. 656 */ 657 @property double angularLimitZDamping() 658 { 659 return getParamZ(13); 660 } 661 /// ditto 662 @property void angularLimitZDamping(double v) 663 { 664 setParamZ(13, v); 665 } 666 /** 667 If `true`, rotation across the Z axis is limited. 668 */ 669 @property bool angularLimitZEnabled() 670 { 671 return getFlagZ(1); 672 } 673 /// ditto 674 @property void angularLimitZEnabled(bool v) 675 { 676 setFlagZ(1, v); 677 } 678 /** 679 When rotating across the Z axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. 680 */ 681 @property double angularLimitZErp() 682 { 683 return getParamZ(16); 684 } 685 /// ditto 686 @property void angularLimitZErp(double v) 687 { 688 setParamZ(16, v); 689 } 690 /** 691 The maximum amount of force that can occur, when rotating around the Z axis. 692 */ 693 @property double angularLimitZForceLimit() 694 { 695 return getParamZ(15); 696 } 697 /// ditto 698 @property void angularLimitZForceLimit(double v) 699 { 700 setParamZ(15, v); 701 } 702 /** 703 The minimum rotation in negative direction to break loose and rotate around the Z axis. 704 */ 705 @property double angularLimitZLowerAngle() 706 { 707 return _getAngularLoLimitZ(); 708 } 709 /// ditto 710 @property void angularLimitZLowerAngle(double v) 711 { 712 _setAngularLoLimitZ(v); 713 } 714 /** 715 The amount of rotational restitution across the Z axis. The lower, the more restitution occurs. 716 */ 717 @property double angularLimitZRestitution() 718 { 719 return getParamZ(14); 720 } 721 /// ditto 722 @property void angularLimitZRestitution(double v) 723 { 724 setParamZ(14, v); 725 } 726 /** 727 The speed of all rotations across the Z axis. 728 */ 729 @property double angularLimitZSoftness() 730 { 731 return getParamZ(12); 732 } 733 /// ditto 734 @property void angularLimitZSoftness(double v) 735 { 736 setParamZ(12, v); 737 } 738 /** 739 The minimum rotation in positive direction to break loose and rotate around the Z axis. 740 */ 741 @property double angularLimitZUpperAngle() 742 { 743 return _getAngularHiLimitZ(); 744 } 745 /// ditto 746 @property void angularLimitZUpperAngle(double v) 747 { 748 _setAngularHiLimitZ(v); 749 } 750 /** 751 If `true`, a rotating motor at the X axis is enabled. 752 */ 753 @property bool angularMotorXEnabled() 754 { 755 return getFlagX(4); 756 } 757 /// ditto 758 @property void angularMotorXEnabled(bool v) 759 { 760 setFlagX(4, v); 761 } 762 /** 763 Maximum acceleration for the motor at the X axis. 764 */ 765 @property double angularMotorXForceLimit() 766 { 767 return getParamX(18); 768 } 769 /// ditto 770 @property void angularMotorXForceLimit(double v) 771 { 772 setParamX(18, v); 773 } 774 /** 775 Target speed for the motor at the X axis. 776 */ 777 @property double angularMotorXTargetVelocity() 778 { 779 return getParamX(17); 780 } 781 /// ditto 782 @property void angularMotorXTargetVelocity(double v) 783 { 784 setParamX(17, v); 785 } 786 /** 787 If `true`, a rotating motor at the Y axis is enabled. 788 */ 789 @property bool angularMotorYEnabled() 790 { 791 return getFlagY(4); 792 } 793 /// ditto 794 @property void angularMotorYEnabled(bool v) 795 { 796 setFlagY(4, v); 797 } 798 /** 799 Maximum acceleration for the motor at the Y axis. 800 */ 801 @property double angularMotorYForceLimit() 802 { 803 return getParamY(18); 804 } 805 /// ditto 806 @property void angularMotorYForceLimit(double v) 807 { 808 setParamY(18, v); 809 } 810 /** 811 Target speed for the motor at the Y axis. 812 */ 813 @property double angularMotorYTargetVelocity() 814 { 815 return getParamY(17); 816 } 817 /// ditto 818 @property void angularMotorYTargetVelocity(double v) 819 { 820 setParamY(17, v); 821 } 822 /** 823 If `true`, a rotating motor at the Z axis is enabled. 824 */ 825 @property bool angularMotorZEnabled() 826 { 827 return getFlagZ(4); 828 } 829 /// ditto 830 @property void angularMotorZEnabled(bool v) 831 { 832 setFlagZ(4, v); 833 } 834 /** 835 Maximum acceleration for the motor at the Z axis. 836 */ 837 @property double angularMotorZForceLimit() 838 { 839 return getParamZ(18); 840 } 841 /// ditto 842 @property void angularMotorZForceLimit(double v) 843 { 844 setParamZ(18, v); 845 } 846 /** 847 Target speed for the motor at the Z axis. 848 */ 849 @property double angularMotorZTargetVelocity() 850 { 851 return getParamZ(17); 852 } 853 /// ditto 854 @property void angularMotorZTargetVelocity(double v) 855 { 856 setParamZ(17, v); 857 } 858 /** 859 860 */ 861 @property double angularSpringXDamping() 862 { 863 return getParamX(20); 864 } 865 /// ditto 866 @property void angularSpringXDamping(double v) 867 { 868 setParamX(20, v); 869 } 870 /** 871 872 */ 873 @property bool angularSpringXEnabled() 874 { 875 return getFlagX(2); 876 } 877 /// ditto 878 @property void angularSpringXEnabled(bool v) 879 { 880 setFlagX(2, v); 881 } 882 /** 883 884 */ 885 @property double angularSpringXEquilibriumPoint() 886 { 887 return getParamX(21); 888 } 889 /// ditto 890 @property void angularSpringXEquilibriumPoint(double v) 891 { 892 setParamX(21, v); 893 } 894 /** 895 896 */ 897 @property double angularSpringXStiffness() 898 { 899 return getParamX(19); 900 } 901 /// ditto 902 @property void angularSpringXStiffness(double v) 903 { 904 setParamX(19, v); 905 } 906 /** 907 908 */ 909 @property double angularSpringYDamping() 910 { 911 return getParamY(20); 912 } 913 /// ditto 914 @property void angularSpringYDamping(double v) 915 { 916 setParamY(20, v); 917 } 918 /** 919 920 */ 921 @property bool angularSpringYEnabled() 922 { 923 return getFlagY(2); 924 } 925 /// ditto 926 @property void angularSpringYEnabled(bool v) 927 { 928 setFlagY(2, v); 929 } 930 /** 931 932 */ 933 @property double angularSpringYEquilibriumPoint() 934 { 935 return getParamY(21); 936 } 937 /// ditto 938 @property void angularSpringYEquilibriumPoint(double v) 939 { 940 setParamY(21, v); 941 } 942 /** 943 944 */ 945 @property double angularSpringYStiffness() 946 { 947 return getParamY(19); 948 } 949 /// ditto 950 @property void angularSpringYStiffness(double v) 951 { 952 setParamY(19, v); 953 } 954 /** 955 956 */ 957 @property double angularSpringZDamping() 958 { 959 return getParamZ(20); 960 } 961 /// ditto 962 @property void angularSpringZDamping(double v) 963 { 964 setParamZ(20, v); 965 } 966 /** 967 968 */ 969 @property bool angularSpringZEnabled() 970 { 971 return getFlagZ(2); 972 } 973 /// ditto 974 @property void angularSpringZEnabled(bool v) 975 { 976 setFlagZ(2, v); 977 } 978 /** 979 980 */ 981 @property double angularSpringZEquilibriumPoint() 982 { 983 return getParamZ(21); 984 } 985 /// ditto 986 @property void angularSpringZEquilibriumPoint(double v) 987 { 988 setParamZ(21, v); 989 } 990 /** 991 992 */ 993 @property double angularSpringZStiffness() 994 { 995 return getParamZ(19); 996 } 997 /// ditto 998 @property void angularSpringZStiffness(double v) 999 { 1000 setParamZ(19, v); 1001 } 1002 /** 1003 The amount of damping that happens at the X motion. 1004 */ 1005 @property double linearLimitXDamping() 1006 { 1007 return getParamX(4); 1008 } 1009 /// ditto 1010 @property void linearLimitXDamping(double v) 1011 { 1012 setParamX(4, v); 1013 } 1014 /** 1015 If `true`, the linear motion across the X axis is limited. 1016 */ 1017 @property bool linearLimitXEnabled() 1018 { 1019 return getFlagX(0); 1020 } 1021 /// ditto 1022 @property void linearLimitXEnabled(bool v) 1023 { 1024 setFlagX(0, v); 1025 } 1026 /** 1027 The minimum difference between the pivot points' X axis. 1028 */ 1029 @property double linearLimitXLowerDistance() 1030 { 1031 return getParamX(0); 1032 } 1033 /// ditto 1034 @property void linearLimitXLowerDistance(double v) 1035 { 1036 setParamX(0, v); 1037 } 1038 /** 1039 The amount of restitution on the X axis movement. The lower, the more momentum gets lost. 1040 */ 1041 @property double linearLimitXRestitution() 1042 { 1043 return getParamX(3); 1044 } 1045 /// ditto 1046 @property void linearLimitXRestitution(double v) 1047 { 1048 setParamX(3, v); 1049 } 1050 /** 1051 A factor applied to the movement across the X axis. The lower, the slower the movement. 1052 */ 1053 @property double linearLimitXSoftness() 1054 { 1055 return getParamX(2); 1056 } 1057 /// ditto 1058 @property void linearLimitXSoftness(double v) 1059 { 1060 setParamX(2, v); 1061 } 1062 /** 1063 The maximum difference between the pivot points' X axis. 1064 */ 1065 @property double linearLimitXUpperDistance() 1066 { 1067 return getParamX(1); 1068 } 1069 /// ditto 1070 @property void linearLimitXUpperDistance(double v) 1071 { 1072 setParamX(1, v); 1073 } 1074 /** 1075 The amount of damping that happens at the Y motion. 1076 */ 1077 @property double linearLimitYDamping() 1078 { 1079 return getParamY(4); 1080 } 1081 /// ditto 1082 @property void linearLimitYDamping(double v) 1083 { 1084 setParamY(4, v); 1085 } 1086 /** 1087 If `true`, the linear motion across the Y axis is limited. 1088 */ 1089 @property bool linearLimitYEnabled() 1090 { 1091 return getFlagY(0); 1092 } 1093 /// ditto 1094 @property void linearLimitYEnabled(bool v) 1095 { 1096 setFlagY(0, v); 1097 } 1098 /** 1099 The minimum difference between the pivot points' Y axis. 1100 */ 1101 @property double linearLimitYLowerDistance() 1102 { 1103 return getParamY(0); 1104 } 1105 /// ditto 1106 @property void linearLimitYLowerDistance(double v) 1107 { 1108 setParamY(0, v); 1109 } 1110 /** 1111 The amount of restitution on the Y axis movement. The lower, the more momentum gets lost. 1112 */ 1113 @property double linearLimitYRestitution() 1114 { 1115 return getParamY(3); 1116 } 1117 /// ditto 1118 @property void linearLimitYRestitution(double v) 1119 { 1120 setParamY(3, v); 1121 } 1122 /** 1123 A factor applied to the movement across the Y axis. The lower, the slower the movement. 1124 */ 1125 @property double linearLimitYSoftness() 1126 { 1127 return getParamY(2); 1128 } 1129 /// ditto 1130 @property void linearLimitYSoftness(double v) 1131 { 1132 setParamY(2, v); 1133 } 1134 /** 1135 The maximum difference between the pivot points' Y axis. 1136 */ 1137 @property double linearLimitYUpperDistance() 1138 { 1139 return getParamY(1); 1140 } 1141 /// ditto 1142 @property void linearLimitYUpperDistance(double v) 1143 { 1144 setParamY(1, v); 1145 } 1146 /** 1147 The amount of damping that happens at the Z motion. 1148 */ 1149 @property double linearLimitZDamping() 1150 { 1151 return getParamZ(4); 1152 } 1153 /// ditto 1154 @property void linearLimitZDamping(double v) 1155 { 1156 setParamZ(4, v); 1157 } 1158 /** 1159 If `true`, the linear motion across the Z axis is limited. 1160 */ 1161 @property bool linearLimitZEnabled() 1162 { 1163 return getFlagZ(0); 1164 } 1165 /// ditto 1166 @property void linearLimitZEnabled(bool v) 1167 { 1168 setFlagZ(0, v); 1169 } 1170 /** 1171 The minimum difference between the pivot points' Z axis. 1172 */ 1173 @property double linearLimitZLowerDistance() 1174 { 1175 return getParamZ(0); 1176 } 1177 /// ditto 1178 @property void linearLimitZLowerDistance(double v) 1179 { 1180 setParamZ(0, v); 1181 } 1182 /** 1183 The amount of restitution on the Z axis movement. The lower, the more momentum gets lost. 1184 */ 1185 @property double linearLimitZRestitution() 1186 { 1187 return getParamZ(3); 1188 } 1189 /// ditto 1190 @property void linearLimitZRestitution(double v) 1191 { 1192 setParamZ(3, v); 1193 } 1194 /** 1195 A factor applied to the movement across the Z axis. The lower, the slower the movement. 1196 */ 1197 @property double linearLimitZSoftness() 1198 { 1199 return getParamZ(2); 1200 } 1201 /// ditto 1202 @property void linearLimitZSoftness(double v) 1203 { 1204 setParamZ(2, v); 1205 } 1206 /** 1207 The maximum difference between the pivot points' Z axis. 1208 */ 1209 @property double linearLimitZUpperDistance() 1210 { 1211 return getParamZ(1); 1212 } 1213 /// ditto 1214 @property void linearLimitZUpperDistance(double v) 1215 { 1216 setParamZ(1, v); 1217 } 1218 /** 1219 If `true`, then there is a linear motor on the X axis. It will attempt to reach the target velocity while staying within the force limits. 1220 */ 1221 @property bool linearMotorXEnabled() 1222 { 1223 return getFlagX(5); 1224 } 1225 /// ditto 1226 @property void linearMotorXEnabled(bool v) 1227 { 1228 setFlagX(5, v); 1229 } 1230 /** 1231 The maximum force the linear motor can apply on the X axis while trying to reach the target velocity. 1232 */ 1233 @property double linearMotorXForceLimit() 1234 { 1235 return getParamX(6); 1236 } 1237 /// ditto 1238 @property void linearMotorXForceLimit(double v) 1239 { 1240 setParamX(6, v); 1241 } 1242 /** 1243 The speed that the linear motor will attempt to reach on the X axis. 1244 */ 1245 @property double linearMotorXTargetVelocity() 1246 { 1247 return getParamX(5); 1248 } 1249 /// ditto 1250 @property void linearMotorXTargetVelocity(double v) 1251 { 1252 setParamX(5, v); 1253 } 1254 /** 1255 If `true`, then there is a linear motor on the Y axis. It will attempt to reach the target velocity while staying within the force limits. 1256 */ 1257 @property bool linearMotorYEnabled() 1258 { 1259 return getFlagY(5); 1260 } 1261 /// ditto 1262 @property void linearMotorYEnabled(bool v) 1263 { 1264 setFlagY(5, v); 1265 } 1266 /** 1267 The maximum force the linear motor can apply on the Y axis while trying to reach the target velocity. 1268 */ 1269 @property double linearMotorYForceLimit() 1270 { 1271 return getParamY(6); 1272 } 1273 /// ditto 1274 @property void linearMotorYForceLimit(double v) 1275 { 1276 setParamY(6, v); 1277 } 1278 /** 1279 The speed that the linear motor will attempt to reach on the Y axis. 1280 */ 1281 @property double linearMotorYTargetVelocity() 1282 { 1283 return getParamY(5); 1284 } 1285 /// ditto 1286 @property void linearMotorYTargetVelocity(double v) 1287 { 1288 setParamY(5, v); 1289 } 1290 /** 1291 If `true`, then there is a linear motor on the Z axis. It will attempt to reach the target velocity while staying within the force limits. 1292 */ 1293 @property bool linearMotorZEnabled() 1294 { 1295 return getFlagZ(5); 1296 } 1297 /// ditto 1298 @property void linearMotorZEnabled(bool v) 1299 { 1300 setFlagZ(5, v); 1301 } 1302 /** 1303 The maximum force the linear motor can apply on the Z axis while trying to reach the target velocity. 1304 */ 1305 @property double linearMotorZForceLimit() 1306 { 1307 return getParamZ(6); 1308 } 1309 /// ditto 1310 @property void linearMotorZForceLimit(double v) 1311 { 1312 setParamZ(6, v); 1313 } 1314 /** 1315 The speed that the linear motor will attempt to reach on the Z axis. 1316 */ 1317 @property double linearMotorZTargetVelocity() 1318 { 1319 return getParamZ(5); 1320 } 1321 /// ditto 1322 @property void linearMotorZTargetVelocity(double v) 1323 { 1324 setParamZ(5, v); 1325 } 1326 /** 1327 1328 */ 1329 @property double linearSpringXDamping() 1330 { 1331 return getParamX(8); 1332 } 1333 /// ditto 1334 @property void linearSpringXDamping(double v) 1335 { 1336 setParamX(8, v); 1337 } 1338 /** 1339 1340 */ 1341 @property bool linearSpringXEnabled() 1342 { 1343 return getFlagX(3); 1344 } 1345 /// ditto 1346 @property void linearSpringXEnabled(bool v) 1347 { 1348 setFlagX(3, v); 1349 } 1350 /** 1351 1352 */ 1353 @property double linearSpringXEquilibriumPoint() 1354 { 1355 return getParamX(9); 1356 } 1357 /// ditto 1358 @property void linearSpringXEquilibriumPoint(double v) 1359 { 1360 setParamX(9, v); 1361 } 1362 /** 1363 1364 */ 1365 @property double linearSpringXStiffness() 1366 { 1367 return getParamX(7); 1368 } 1369 /// ditto 1370 @property void linearSpringXStiffness(double v) 1371 { 1372 setParamX(7, v); 1373 } 1374 /** 1375 1376 */ 1377 @property double linearSpringYDamping() 1378 { 1379 return getParamY(8); 1380 } 1381 /// ditto 1382 @property void linearSpringYDamping(double v) 1383 { 1384 setParamY(8, v); 1385 } 1386 /** 1387 1388 */ 1389 @property bool linearSpringYEnabled() 1390 { 1391 return getFlagY(3); 1392 } 1393 /// ditto 1394 @property void linearSpringYEnabled(bool v) 1395 { 1396 setFlagY(3, v); 1397 } 1398 /** 1399 1400 */ 1401 @property double linearSpringYEquilibriumPoint() 1402 { 1403 return getParamY(9); 1404 } 1405 /// ditto 1406 @property void linearSpringYEquilibriumPoint(double v) 1407 { 1408 setParamY(9, v); 1409 } 1410 /** 1411 1412 */ 1413 @property double linearSpringYStiffness() 1414 { 1415 return getParamY(7); 1416 } 1417 /// ditto 1418 @property void linearSpringYStiffness(double v) 1419 { 1420 setParamY(7, v); 1421 } 1422 /** 1423 1424 */ 1425 @property double linearSpringZDamping() 1426 { 1427 return getParamZ(8); 1428 } 1429 /// ditto 1430 @property void linearSpringZDamping(double v) 1431 { 1432 setParamZ(8, v); 1433 } 1434 /** 1435 1436 */ 1437 @property bool linearSpringZEnabled() 1438 { 1439 return getFlagZ(3); 1440 } 1441 /// ditto 1442 @property void linearSpringZEnabled(bool v) 1443 { 1444 setFlagZ(3, v); 1445 } 1446 /** 1447 1448 */ 1449 @property double linearSpringZEquilibriumPoint() 1450 { 1451 return getParamZ(9); 1452 } 1453 /// ditto 1454 @property void linearSpringZEquilibriumPoint(double v) 1455 { 1456 setParamZ(9, v); 1457 } 1458 /** 1459 1460 */ 1461 @property double linearSpringZStiffness() 1462 { 1463 return getParamZ(7); 1464 } 1465 /// ditto 1466 @property void linearSpringZStiffness(double v) 1467 { 1468 setParamZ(7, v); 1469 } 1470 }