gdcore-tools 2.0.0-gd-v5.5.229-autobuild → 2.0.0-gd-v5.5.231-autobuild
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Runtime/CustomRuntimeObject.js +1 -1
- package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js +1 -1
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +2 -2
- package/dist/Runtime/Extensions/3D/JsExtension.js +6 -2
- package/dist/Runtime/Extensions/BBText/JsExtension.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/JsExtension.js +8 -9
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js +1 -1
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/JsExtension.js +1047 -3
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js +2 -0
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js.map +7 -0
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.d.ts +94 -9
- package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.wasm +0 -0
- package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +2 -2
- package/dist/Runtime/RuntimeInstanceContainer.js +1 -1
- package/dist/Runtime/RuntimeInstanceContainer.js.map +2 -2
- package/dist/Runtime/debugger-client/hot-reloader.js +1 -1
- package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
- package/dist/Runtime/events-tools/cameratools.js +1 -1
- package/dist/Runtime/events-tools/cameratools.js.map +2 -2
- package/dist/Runtime/runtimeobject.js +1 -1
- package/dist/Runtime/runtimeobject.js.map +2 -2
- package/dist/Runtime/runtimescene.js +1 -1
- package/dist/Runtime/runtimescene.js.map +2 -2
- package/dist/Runtime/spriteruntimeobject.js +1 -1
- package/dist/Runtime/spriteruntimeobject.js.map +2 -2
- package/dist/Runtime/types/project-data.d.ts +3 -0
- package/dist/lib/libGD.cjs +1 -1
- package/dist/lib/libGD.wasm +0 -0
- package/dist/loaders.cjs +3 -3
- package/gd.d.ts +1 -0
- package/package.json +1 -1
|
@@ -97,6 +97,60 @@ module.exports = {
|
|
|
97
97
|
return true;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
if (propertyName === 'shapeOffsetX') {
|
|
101
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
102
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
103
|
+
behaviorContent
|
|
104
|
+
.getChild('shapeOffsetX')
|
|
105
|
+
.setDoubleValue(newValueAsNumber);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (propertyName === 'shapeOffsetY') {
|
|
110
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
111
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
112
|
+
behaviorContent
|
|
113
|
+
.getChild('shapeOffsetY')
|
|
114
|
+
.setDoubleValue(newValueAsNumber);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (propertyName === 'shapeOffsetZ') {
|
|
119
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
120
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
121
|
+
behaviorContent
|
|
122
|
+
.getChild('shapeOffsetZ')
|
|
123
|
+
.setDoubleValue(newValueAsNumber);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (propertyName === 'massCenterOffsetX') {
|
|
128
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
129
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
130
|
+
behaviorContent
|
|
131
|
+
.getChild('massCenterOffsetX')
|
|
132
|
+
.setDoubleValue(newValueAsNumber);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (propertyName === 'massCenterOffsetY') {
|
|
137
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
138
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
139
|
+
behaviorContent
|
|
140
|
+
.getChild('massCenterOffsetY')
|
|
141
|
+
.setDoubleValue(newValueAsNumber);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (propertyName === 'massCenterOffsetZ') {
|
|
146
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
147
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
148
|
+
behaviorContent
|
|
149
|
+
.getChild('massCenterOffsetZ')
|
|
150
|
+
.setDoubleValue(newValueAsNumber);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
|
|
100
154
|
if (propertyName === 'density') {
|
|
101
155
|
behaviorContent
|
|
102
156
|
.getChild('density')
|
|
@@ -104,6 +158,13 @@ module.exports = {
|
|
|
104
158
|
return true;
|
|
105
159
|
}
|
|
106
160
|
|
|
161
|
+
if (propertyName === 'massOverride') {
|
|
162
|
+
behaviorContent
|
|
163
|
+
.getChild('massOverride')
|
|
164
|
+
.setDoubleValue(parseFloat(newValue));
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
|
|
107
168
|
if (propertyName === 'friction') {
|
|
108
169
|
const newValueAsNumber = parseFloat(newValue);
|
|
109
170
|
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
@@ -166,7 +227,7 @@ module.exports = {
|
|
|
166
227
|
|
|
167
228
|
behaviorProperties
|
|
168
229
|
.getOrCreate('object3D')
|
|
169
|
-
.setValue(behaviorContent.getChild('
|
|
230
|
+
.setValue(behaviorContent.getChild('object3D').getStringValue())
|
|
170
231
|
.setType('Behavior')
|
|
171
232
|
.setLabel('3D capability')
|
|
172
233
|
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
@@ -277,6 +338,107 @@ module.exports = {
|
|
|
277
338
|
.setLabel('Shape Dimension C')
|
|
278
339
|
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
279
340
|
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
341
|
+
if (!behaviorContent.hasChild('shapeOffsetX')) {
|
|
342
|
+
behaviorContent.addChild('shapeOffsetX').setDoubleValue(0);
|
|
343
|
+
}
|
|
344
|
+
behaviorProperties
|
|
345
|
+
.getOrCreate('shapeOffsetX')
|
|
346
|
+
.setValue(
|
|
347
|
+
behaviorContent
|
|
348
|
+
.getChild('shapeOffsetX')
|
|
349
|
+
.getDoubleValue()
|
|
350
|
+
.toString(10)
|
|
351
|
+
)
|
|
352
|
+
.setType('Number')
|
|
353
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
354
|
+
.setLabel('Shape offset X')
|
|
355
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
356
|
+
.setAdvanced(true)
|
|
357
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
358
|
+
if (!behaviorContent.hasChild('shapeOffsetY')) {
|
|
359
|
+
behaviorContent.addChild('shapeOffsetY').setDoubleValue(0);
|
|
360
|
+
}
|
|
361
|
+
behaviorProperties
|
|
362
|
+
.getOrCreate('shapeOffsetY')
|
|
363
|
+
.setValue(
|
|
364
|
+
behaviorContent
|
|
365
|
+
.getChild('shapeOffsetY')
|
|
366
|
+
.getDoubleValue()
|
|
367
|
+
.toString(10)
|
|
368
|
+
)
|
|
369
|
+
.setType('Number')
|
|
370
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
371
|
+
.setLabel('Shape offset Y')
|
|
372
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
373
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
374
|
+
if (!behaviorContent.hasChild('shapeOffsetZ')) {
|
|
375
|
+
behaviorContent.addChild('shapeOffsetZ').setDoubleValue(0);
|
|
376
|
+
}
|
|
377
|
+
behaviorProperties
|
|
378
|
+
.getOrCreate('shapeOffsetZ')
|
|
379
|
+
.setValue(
|
|
380
|
+
behaviorContent
|
|
381
|
+
.getChild('shapeOffsetZ')
|
|
382
|
+
.getDoubleValue()
|
|
383
|
+
.toString(10)
|
|
384
|
+
)
|
|
385
|
+
.setType('Number')
|
|
386
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
387
|
+
.setLabel('Shape offset Z')
|
|
388
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
389
|
+
.setAdvanced(true)
|
|
390
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
391
|
+
if (!behaviorContent.hasChild('massCenterOffsetX')) {
|
|
392
|
+
behaviorContent.addChild('massCenterOffsetX').setDoubleValue(0);
|
|
393
|
+
}
|
|
394
|
+
behaviorProperties
|
|
395
|
+
.getOrCreate('massCenterOffsetX')
|
|
396
|
+
.setValue(
|
|
397
|
+
behaviorContent
|
|
398
|
+
.getChild('massCenterOffsetX')
|
|
399
|
+
.getDoubleValue()
|
|
400
|
+
.toString(10)
|
|
401
|
+
)
|
|
402
|
+
.setType('Number')
|
|
403
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
404
|
+
.setLabel('Center of mass offset X')
|
|
405
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
406
|
+
.setAdvanced(true)
|
|
407
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
408
|
+
if (!behaviorContent.hasChild('massCenterOffsetY')) {
|
|
409
|
+
behaviorContent.addChild('massCenterOffsetY').setDoubleValue(0);
|
|
410
|
+
}
|
|
411
|
+
behaviorProperties
|
|
412
|
+
.getOrCreate('massCenterOffsetY')
|
|
413
|
+
.setValue(
|
|
414
|
+
behaviorContent
|
|
415
|
+
.getChild('massCenterOffsetY')
|
|
416
|
+
.getDoubleValue()
|
|
417
|
+
.toString(10)
|
|
418
|
+
)
|
|
419
|
+
.setType('Number')
|
|
420
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
421
|
+
.setLabel('Center of mass offset Y')
|
|
422
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
423
|
+
.setAdvanced(true)
|
|
424
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
425
|
+
if (!behaviorContent.hasChild('massCenterOffsetZ')) {
|
|
426
|
+
behaviorContent.addChild('massCenterOffsetZ').setDoubleValue(0);
|
|
427
|
+
}
|
|
428
|
+
behaviorProperties
|
|
429
|
+
.getOrCreate('massCenterOffsetZ')
|
|
430
|
+
.setValue(
|
|
431
|
+
behaviorContent
|
|
432
|
+
.getChild('massCenterOffsetZ')
|
|
433
|
+
.getDoubleValue()
|
|
434
|
+
.toString(10)
|
|
435
|
+
)
|
|
436
|
+
.setType('Number')
|
|
437
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
438
|
+
.setLabel('Center of mass offset Z')
|
|
439
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
440
|
+
.setAdvanced(true)
|
|
441
|
+
.setHidden(true); // Hidden as required to be changed in the full editor.
|
|
280
442
|
behaviorProperties
|
|
281
443
|
.getOrCreate('density')
|
|
282
444
|
.setValue(
|
|
@@ -289,6 +451,21 @@ module.exports = {
|
|
|
289
451
|
'Define the weight of the object, according to its size. The bigger the density, the heavier the object.'
|
|
290
452
|
)
|
|
291
453
|
);
|
|
454
|
+
if (!behaviorContent.hasChild('massOverride')) {
|
|
455
|
+
behaviorContent.addChild('massOverride').setDoubleValue(0);
|
|
456
|
+
}
|
|
457
|
+
behaviorProperties
|
|
458
|
+
.getOrCreate('massOverride')
|
|
459
|
+
.setLabel(_('Mass override'))
|
|
460
|
+
.setGroup('')
|
|
461
|
+
.setType('Number')
|
|
462
|
+
.setValue(
|
|
463
|
+
behaviorContent
|
|
464
|
+
.getChild('massOverride')
|
|
465
|
+
.getDoubleValue()
|
|
466
|
+
.toString(10)
|
|
467
|
+
)
|
|
468
|
+
.setDescription(_('Leave at 0 to use the density.'));
|
|
292
469
|
behaviorProperties
|
|
293
470
|
.getOrCreate('friction')
|
|
294
471
|
.setValue(
|
|
@@ -387,6 +564,13 @@ module.exports = {
|
|
|
387
564
|
behaviorContent.addChild('shapeDimensionA').setDoubleValue(0);
|
|
388
565
|
behaviorContent.addChild('shapeDimensionB').setDoubleValue(0);
|
|
389
566
|
behaviorContent.addChild('shapeDimensionC').setDoubleValue(0);
|
|
567
|
+
behaviorContent.addChild('shapeOffsetX').setDoubleValue(0);
|
|
568
|
+
behaviorContent.addChild('shapeOffsetY').setDoubleValue(0);
|
|
569
|
+
behaviorContent.addChild('shapeOffsetZ').setDoubleValue(0);
|
|
570
|
+
behaviorContent.addChild('massCenterOffsetX').setDoubleValue(0);
|
|
571
|
+
behaviorContent.addChild('massCenterOffsetY').setDoubleValue(0);
|
|
572
|
+
behaviorContent.addChild('massCenterOffsetZ').setDoubleValue(0);
|
|
573
|
+
behaviorContent.addChild('massOverride').setDoubleValue(0);
|
|
390
574
|
behaviorContent.addChild('density').setDoubleValue(1.0);
|
|
391
575
|
behaviorContent.addChild('friction').setDoubleValue(0.3);
|
|
392
576
|
behaviorContent.addChild('restitution').setDoubleValue(0.1);
|
|
@@ -2454,6 +2638,866 @@ module.exports = {
|
|
|
2454
2638
|
.setGetter('getMaxFallingSpeed');
|
|
2455
2639
|
}
|
|
2456
2640
|
|
|
2641
|
+
{
|
|
2642
|
+
const behavior = new gd.BehaviorJsImplementation();
|
|
2643
|
+
behavior.updateProperty = function (
|
|
2644
|
+
behaviorContent,
|
|
2645
|
+
propertyName,
|
|
2646
|
+
newValue
|
|
2647
|
+
) {
|
|
2648
|
+
if (propertyName === 'physics3D') {
|
|
2649
|
+
behaviorContent.getChild('physics3D').setStringValue(newValue);
|
|
2650
|
+
return true;
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
if (propertyName === 'steerAngleMax') {
|
|
2654
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2655
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2656
|
+
behaviorContent
|
|
2657
|
+
.getChild('steerAngleMax')
|
|
2658
|
+
.setDoubleValue(newValueAsNumber);
|
|
2659
|
+
return true;
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2662
|
+
if (propertyName === 'beginningSteerSpeed') {
|
|
2663
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2664
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2665
|
+
behaviorContent
|
|
2666
|
+
.getChild('beginningSteerSpeed')
|
|
2667
|
+
.setDoubleValue(newValueAsNumber);
|
|
2668
|
+
return true;
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
if (propertyName === 'endSteerSpeed') {
|
|
2672
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2673
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2674
|
+
behaviorContent
|
|
2675
|
+
.getChild('endSteerSpeed')
|
|
2676
|
+
.setDoubleValue(newValueAsNumber);
|
|
2677
|
+
return true;
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
if (propertyName === 'engineTorqueMax') {
|
|
2681
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2682
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2683
|
+
behaviorContent
|
|
2684
|
+
.getChild('engineTorqueMax')
|
|
2685
|
+
.setDoubleValue(newValueAsNumber);
|
|
2686
|
+
return true;
|
|
2687
|
+
}
|
|
2688
|
+
|
|
2689
|
+
if (propertyName === 'engineSpeedMax') {
|
|
2690
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2691
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2692
|
+
behaviorContent
|
|
2693
|
+
.getChild('engineSpeedMax')
|
|
2694
|
+
.setDoubleValue(newValueAsNumber);
|
|
2695
|
+
return true;
|
|
2696
|
+
}
|
|
2697
|
+
|
|
2698
|
+
if (propertyName === 'engineInertia') {
|
|
2699
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2700
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2701
|
+
behaviorContent
|
|
2702
|
+
.getChild('engineInertia')
|
|
2703
|
+
.setDoubleValue(newValueAsNumber);
|
|
2704
|
+
return true;
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
if (propertyName === 'reverseGearRatio1') {
|
|
2708
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2709
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2710
|
+
behaviorContent
|
|
2711
|
+
.getChild('reverseGearRatio1')
|
|
2712
|
+
.setDoubleValue(newValueAsNumber);
|
|
2713
|
+
return true;
|
|
2714
|
+
}
|
|
2715
|
+
|
|
2716
|
+
if (propertyName === 'gearRatio1') {
|
|
2717
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2718
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2719
|
+
behaviorContent
|
|
2720
|
+
.getChild('gearRatio1')
|
|
2721
|
+
.setDoubleValue(newValueAsNumber);
|
|
2722
|
+
return true;
|
|
2723
|
+
}
|
|
2724
|
+
|
|
2725
|
+
if (propertyName === 'gearRatio2') {
|
|
2726
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2727
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2728
|
+
behaviorContent
|
|
2729
|
+
.getChild('gearRatio2')
|
|
2730
|
+
.setDoubleValue(newValueAsNumber);
|
|
2731
|
+
return true;
|
|
2732
|
+
}
|
|
2733
|
+
|
|
2734
|
+
if (propertyName === 'gearRatio2') {
|
|
2735
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2736
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2737
|
+
behaviorContent
|
|
2738
|
+
.getChild('gearRatio2')
|
|
2739
|
+
.setDoubleValue(newValueAsNumber);
|
|
2740
|
+
return true;
|
|
2741
|
+
}
|
|
2742
|
+
|
|
2743
|
+
if (propertyName === 'gearRatio3') {
|
|
2744
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2745
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2746
|
+
behaviorContent
|
|
2747
|
+
.getChild('gearRatio3')
|
|
2748
|
+
.setDoubleValue(newValueAsNumber);
|
|
2749
|
+
return true;
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
if (propertyName === 'gearRatio4') {
|
|
2753
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2754
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2755
|
+
behaviorContent
|
|
2756
|
+
.getChild('gearRatio4')
|
|
2757
|
+
.setDoubleValue(newValueAsNumber);
|
|
2758
|
+
return true;
|
|
2759
|
+
}
|
|
2760
|
+
|
|
2761
|
+
if (propertyName === 'gearRatio5') {
|
|
2762
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2763
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2764
|
+
behaviorContent
|
|
2765
|
+
.getChild('gearRatio5')
|
|
2766
|
+
.setDoubleValue(newValueAsNumber);
|
|
2767
|
+
return true;
|
|
2768
|
+
}
|
|
2769
|
+
|
|
2770
|
+
if (propertyName === 'gearRatio6') {
|
|
2771
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2772
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2773
|
+
behaviorContent
|
|
2774
|
+
.getChild('gearRatio6')
|
|
2775
|
+
.setDoubleValue(newValueAsNumber);
|
|
2776
|
+
return true;
|
|
2777
|
+
}
|
|
2778
|
+
|
|
2779
|
+
if (propertyName === 'wheelRadius') {
|
|
2780
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2781
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2782
|
+
behaviorContent
|
|
2783
|
+
.getChild('wheelRadius')
|
|
2784
|
+
.setDoubleValue(newValueAsNumber);
|
|
2785
|
+
return true;
|
|
2786
|
+
}
|
|
2787
|
+
|
|
2788
|
+
if (propertyName === 'wheelWidth') {
|
|
2789
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2790
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2791
|
+
behaviorContent
|
|
2792
|
+
.getChild('wheelWidth')
|
|
2793
|
+
.setDoubleValue(newValueAsNumber);
|
|
2794
|
+
return true;
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2797
|
+
if (propertyName === 'backWheelOffsetX') {
|
|
2798
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2799
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2800
|
+
behaviorContent
|
|
2801
|
+
.getChild('backWheelOffsetX')
|
|
2802
|
+
.setDoubleValue(newValueAsNumber);
|
|
2803
|
+
return true;
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
if (propertyName === 'frontWheelOffsetX') {
|
|
2807
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2808
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2809
|
+
behaviorContent
|
|
2810
|
+
.getChild('frontWheelOffsetX')
|
|
2811
|
+
.setDoubleValue(newValueAsNumber);
|
|
2812
|
+
return true;
|
|
2813
|
+
}
|
|
2814
|
+
|
|
2815
|
+
if (propertyName === 'wheelOffsetY') {
|
|
2816
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2817
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2818
|
+
behaviorContent
|
|
2819
|
+
.getChild('wheelOffsetY')
|
|
2820
|
+
.setDoubleValue(newValueAsNumber);
|
|
2821
|
+
return true;
|
|
2822
|
+
}
|
|
2823
|
+
|
|
2824
|
+
if (propertyName === 'wheelOffsetZ') {
|
|
2825
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2826
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2827
|
+
behaviorContent
|
|
2828
|
+
.getChild('wheelOffsetZ')
|
|
2829
|
+
.setDoubleValue(newValueAsNumber);
|
|
2830
|
+
return true;
|
|
2831
|
+
}
|
|
2832
|
+
|
|
2833
|
+
if (propertyName === 'brakeTorqueMax') {
|
|
2834
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2835
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2836
|
+
behaviorContent
|
|
2837
|
+
.getChild('brakeTorqueMax')
|
|
2838
|
+
.setDoubleValue(newValueAsNumber);
|
|
2839
|
+
return true;
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
if (propertyName === 'handBrakeTorqueMax') {
|
|
2843
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2844
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2845
|
+
behaviorContent
|
|
2846
|
+
.getChild('handBrakeTorqueMax')
|
|
2847
|
+
.setDoubleValue(newValueAsNumber);
|
|
2848
|
+
return true;
|
|
2849
|
+
}
|
|
2850
|
+
|
|
2851
|
+
if (propertyName === 'hasBackWheelDrive') {
|
|
2852
|
+
behaviorContent
|
|
2853
|
+
.getChild('hasBackWheelDrive')
|
|
2854
|
+
.setBoolValue(newValue === '1');
|
|
2855
|
+
return true;
|
|
2856
|
+
}
|
|
2857
|
+
|
|
2858
|
+
if (propertyName === 'hasFrontWheelDrive') {
|
|
2859
|
+
behaviorContent
|
|
2860
|
+
.getChild('hasFrontWheelDrive')
|
|
2861
|
+
.setBoolValue(newValue === '1');
|
|
2862
|
+
return true;
|
|
2863
|
+
}
|
|
2864
|
+
|
|
2865
|
+
if (propertyName === 'pitchRollAngleMax') {
|
|
2866
|
+
const newValueAsNumber = parseFloat(newValue);
|
|
2867
|
+
if (newValueAsNumber !== newValueAsNumber) return false;
|
|
2868
|
+
behaviorContent
|
|
2869
|
+
.getChild('pitchRollAngleMax')
|
|
2870
|
+
.setDoubleValue(newValueAsNumber);
|
|
2871
|
+
return true;
|
|
2872
|
+
}
|
|
2873
|
+
|
|
2874
|
+
return false;
|
|
2875
|
+
};
|
|
2876
|
+
behavior.getProperties = function (behaviorContent) {
|
|
2877
|
+
const behaviorProperties = new gd.MapStringPropertyDescriptor();
|
|
2878
|
+
|
|
2879
|
+
behaviorProperties
|
|
2880
|
+
.getOrCreate('physics3D')
|
|
2881
|
+
.setValue(behaviorContent.getChild('physics3D').getStringValue())
|
|
2882
|
+
.setType('Behavior')
|
|
2883
|
+
.setLabel('3D physics')
|
|
2884
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
2885
|
+
.addExtraInfo('Physics3D::Physics3DBehavior');
|
|
2886
|
+
|
|
2887
|
+
behaviorProperties
|
|
2888
|
+
.getOrCreate('steerAngleMax')
|
|
2889
|
+
.setLabel(_('Max steer angle'))
|
|
2890
|
+
.setGroup(_('Steering'))
|
|
2891
|
+
.setType('Number')
|
|
2892
|
+
.setMeasurementUnit(gd.MeasurementUnit.getDegreeAngle())
|
|
2893
|
+
.setValue(
|
|
2894
|
+
behaviorContent
|
|
2895
|
+
.getChild('steerAngleMax')
|
|
2896
|
+
.getDoubleValue()
|
|
2897
|
+
.toString(10)
|
|
2898
|
+
)
|
|
2899
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
2900
|
+
|
|
2901
|
+
behaviorProperties
|
|
2902
|
+
.getOrCreate('beginningSteerSpeed')
|
|
2903
|
+
.setLabel(_('Beginning steer speed'))
|
|
2904
|
+
.setGroup(_('Steering'))
|
|
2905
|
+
.setType('Number')
|
|
2906
|
+
.setMeasurementUnit(gd.MeasurementUnit.getAngularSpeed())
|
|
2907
|
+
.setValue(
|
|
2908
|
+
behaviorContent
|
|
2909
|
+
.getChild('beginningSteerSpeed')
|
|
2910
|
+
.getDoubleValue()
|
|
2911
|
+
.toString(10)
|
|
2912
|
+
)
|
|
2913
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
2914
|
+
|
|
2915
|
+
behaviorProperties
|
|
2916
|
+
.getOrCreate('endSteerSpeed')
|
|
2917
|
+
.setLabel(_('End steer speed'))
|
|
2918
|
+
.setGroup(_('Steering'))
|
|
2919
|
+
.setType('Number')
|
|
2920
|
+
.setMeasurementUnit(gd.MeasurementUnit.getAngularSpeed())
|
|
2921
|
+
.setValue(
|
|
2922
|
+
behaviorContent
|
|
2923
|
+
.getChild('endSteerSpeed')
|
|
2924
|
+
.getDoubleValue()
|
|
2925
|
+
.toString(10)
|
|
2926
|
+
)
|
|
2927
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
2928
|
+
|
|
2929
|
+
behaviorProperties
|
|
2930
|
+
.getOrCreate('engineTorqueMax')
|
|
2931
|
+
.setLabel(_('Max engine torque'))
|
|
2932
|
+
.setGroup(_('Speed'))
|
|
2933
|
+
.setType('Number')
|
|
2934
|
+
.setDescription(
|
|
2935
|
+
_('Allow cars to climb steep slopes and push heavy obstacles.')
|
|
2936
|
+
)
|
|
2937
|
+
.setValue(
|
|
2938
|
+
behaviorContent
|
|
2939
|
+
.getChild('engineTorqueMax')
|
|
2940
|
+
.getDoubleValue()
|
|
2941
|
+
.toString(10)
|
|
2942
|
+
);
|
|
2943
|
+
|
|
2944
|
+
behaviorProperties
|
|
2945
|
+
.getOrCreate('engineSpeedMax')
|
|
2946
|
+
.setLabel(_('Max engine speed'))
|
|
2947
|
+
.setGroup(_('Speed'))
|
|
2948
|
+
.setType('Number')
|
|
2949
|
+
.setValue(
|
|
2950
|
+
behaviorContent
|
|
2951
|
+
.getChild('engineSpeedMax')
|
|
2952
|
+
.getDoubleValue()
|
|
2953
|
+
.toString(10)
|
|
2954
|
+
);
|
|
2955
|
+
|
|
2956
|
+
behaviorProperties
|
|
2957
|
+
.getOrCreate('engineInertia')
|
|
2958
|
+
.setLabel(_('Engine inertia'))
|
|
2959
|
+
.setGroup(_('Speed'))
|
|
2960
|
+
.setType('Number')
|
|
2961
|
+
.setDescription(_('Slow down car acceleration.'))
|
|
2962
|
+
.setValue(
|
|
2963
|
+
behaviorContent
|
|
2964
|
+
.getChild('engineInertia')
|
|
2965
|
+
.getDoubleValue()
|
|
2966
|
+
.toString(10)
|
|
2967
|
+
);
|
|
2968
|
+
|
|
2969
|
+
behaviorProperties
|
|
2970
|
+
.getOrCreate('reverseGearRatio1')
|
|
2971
|
+
.setLabel(_('Reverse gear ratio'))
|
|
2972
|
+
.setGroup(_('Speed'))
|
|
2973
|
+
.setType('Number')
|
|
2974
|
+
.setValue(
|
|
2975
|
+
behaviorContent
|
|
2976
|
+
.getChild('reverseGearRatio1')
|
|
2977
|
+
.getDoubleValue()
|
|
2978
|
+
.toString(10)
|
|
2979
|
+
)
|
|
2980
|
+
.setAdvanced(true)
|
|
2981
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
2982
|
+
|
|
2983
|
+
behaviorProperties
|
|
2984
|
+
.getOrCreate('gearRatio1')
|
|
2985
|
+
.setLabel(_('1st gear ratio'))
|
|
2986
|
+
.setGroup(_('Speed'))
|
|
2987
|
+
.setType('Number')
|
|
2988
|
+
.setValue(
|
|
2989
|
+
behaviorContent.getChild('gearRatio1').getDoubleValue().toString(10)
|
|
2990
|
+
)
|
|
2991
|
+
.setAdvanced(true)
|
|
2992
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
2993
|
+
|
|
2994
|
+
behaviorProperties
|
|
2995
|
+
.getOrCreate('gearRatio2')
|
|
2996
|
+
.setLabel(_('2nd gear ratio'))
|
|
2997
|
+
.setGroup(_('Speed'))
|
|
2998
|
+
.setType('Number')
|
|
2999
|
+
.setValue(
|
|
3000
|
+
behaviorContent.getChild('gearRatio2').getDoubleValue().toString(10)
|
|
3001
|
+
)
|
|
3002
|
+
.setAdvanced(true)
|
|
3003
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3004
|
+
|
|
3005
|
+
behaviorProperties
|
|
3006
|
+
.getOrCreate('gearRatio3')
|
|
3007
|
+
.setLabel(_('3rd gear ratio'))
|
|
3008
|
+
.setGroup(_('Speed'))
|
|
3009
|
+
.setType('Number')
|
|
3010
|
+
.setValue(
|
|
3011
|
+
behaviorContent.getChild('gearRatio3').getDoubleValue().toString(10)
|
|
3012
|
+
)
|
|
3013
|
+
.setAdvanced(true)
|
|
3014
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3015
|
+
|
|
3016
|
+
behaviorProperties
|
|
3017
|
+
.getOrCreate('gearRatio4')
|
|
3018
|
+
.setLabel(_('4th gear ratio'))
|
|
3019
|
+
.setGroup(_('Speed'))
|
|
3020
|
+
.setType('Number')
|
|
3021
|
+
.setValue(
|
|
3022
|
+
behaviorContent.getChild('gearRatio4').getDoubleValue().toString(10)
|
|
3023
|
+
)
|
|
3024
|
+
.setAdvanced(true)
|
|
3025
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3026
|
+
|
|
3027
|
+
behaviorProperties
|
|
3028
|
+
.getOrCreate('gearRatio5')
|
|
3029
|
+
.setLabel(_('5th gear ratio'))
|
|
3030
|
+
.setGroup(_('Speed'))
|
|
3031
|
+
.setType('Number')
|
|
3032
|
+
.setValue(
|
|
3033
|
+
behaviorContent.getChild('gearRatio5').getDoubleValue().toString(10)
|
|
3034
|
+
)
|
|
3035
|
+
.setAdvanced(true)
|
|
3036
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3037
|
+
|
|
3038
|
+
behaviorProperties
|
|
3039
|
+
.getOrCreate('gearRatio6')
|
|
3040
|
+
.setLabel(_('6th gear ratio'))
|
|
3041
|
+
.setGroup(_('Speed'))
|
|
3042
|
+
.setType('Number')
|
|
3043
|
+
.setValue(
|
|
3044
|
+
behaviorContent.getChild('gearRatio6').getDoubleValue().toString(10)
|
|
3045
|
+
)
|
|
3046
|
+
.setAdvanced(true)
|
|
3047
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3048
|
+
|
|
3049
|
+
behaviorProperties
|
|
3050
|
+
.getOrCreate('wheelRadius')
|
|
3051
|
+
.setLabel(_('Wheel radius'))
|
|
3052
|
+
.setGroup(_('Wheels'))
|
|
3053
|
+
.setType('Number')
|
|
3054
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3055
|
+
.setValue(
|
|
3056
|
+
behaviorContent
|
|
3057
|
+
.getChild('wheelRadius')
|
|
3058
|
+
.getDoubleValue()
|
|
3059
|
+
.toString(10)
|
|
3060
|
+
)
|
|
3061
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3062
|
+
|
|
3063
|
+
behaviorProperties
|
|
3064
|
+
.getOrCreate('wheelWidth')
|
|
3065
|
+
.setLabel(_('Wheel width'))
|
|
3066
|
+
.setGroup(_('Wheels'))
|
|
3067
|
+
.setType('Number')
|
|
3068
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3069
|
+
.setValue(
|
|
3070
|
+
behaviorContent.getChild('wheelWidth').getDoubleValue().toString(10)
|
|
3071
|
+
)
|
|
3072
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3073
|
+
|
|
3074
|
+
behaviorProperties
|
|
3075
|
+
.getOrCreate('backWheelOffsetX')
|
|
3076
|
+
.setLabel(_('Back wheel offset X'))
|
|
3077
|
+
.setGroup(_('Wheels'))
|
|
3078
|
+
.setType('Number')
|
|
3079
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3080
|
+
.setDescription(_('Positive values move wheels outside.'))
|
|
3081
|
+
.setValue(
|
|
3082
|
+
behaviorContent
|
|
3083
|
+
.getChild('backWheelOffsetX')
|
|
3084
|
+
.getDoubleValue()
|
|
3085
|
+
.toString(10)
|
|
3086
|
+
)
|
|
3087
|
+
.setAdvanced(true)
|
|
3088
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3089
|
+
|
|
3090
|
+
behaviorProperties
|
|
3091
|
+
.getOrCreate('frontWheelOffsetX')
|
|
3092
|
+
.setLabel(_('Front wheel offset X'))
|
|
3093
|
+
.setGroup(_('Wheels'))
|
|
3094
|
+
.setType('Number')
|
|
3095
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3096
|
+
.setDescription(_('Positive values move wheels outside.'))
|
|
3097
|
+
.setValue(
|
|
3098
|
+
behaviorContent
|
|
3099
|
+
.getChild('frontWheelOffsetX')
|
|
3100
|
+
.getDoubleValue()
|
|
3101
|
+
.toString(10)
|
|
3102
|
+
)
|
|
3103
|
+
.setAdvanced(true)
|
|
3104
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3105
|
+
|
|
3106
|
+
behaviorProperties
|
|
3107
|
+
.getOrCreate('wheelOffsetY')
|
|
3108
|
+
.setLabel(_('Wheel offset Y'))
|
|
3109
|
+
.setGroup(_('Wheels'))
|
|
3110
|
+
.setType('Number')
|
|
3111
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3112
|
+
.setDescription(_('Positive values move wheels outside.'))
|
|
3113
|
+
.setValue(
|
|
3114
|
+
behaviorContent
|
|
3115
|
+
.getChild('wheelOffsetY')
|
|
3116
|
+
.getDoubleValue()
|
|
3117
|
+
.toString(10)
|
|
3118
|
+
)
|
|
3119
|
+
.setAdvanced(true)
|
|
3120
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3121
|
+
|
|
3122
|
+
behaviorProperties
|
|
3123
|
+
.getOrCreate('wheelOffsetZ')
|
|
3124
|
+
.setLabel(_('Wheel offset Z'))
|
|
3125
|
+
.setGroup(_('Wheels'))
|
|
3126
|
+
.setType('Number')
|
|
3127
|
+
.setMeasurementUnit(gd.MeasurementUnit.getPixel())
|
|
3128
|
+
.setDescription(_('Positive values move wheels outside.'))
|
|
3129
|
+
.setValue(
|
|
3130
|
+
behaviorContent
|
|
3131
|
+
.getChild('wheelOffsetZ')
|
|
3132
|
+
.getDoubleValue()
|
|
3133
|
+
.toString(10)
|
|
3134
|
+
)
|
|
3135
|
+
.setAdvanced(true)
|
|
3136
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3137
|
+
|
|
3138
|
+
behaviorProperties
|
|
3139
|
+
.getOrCreate('brakeTorqueMax')
|
|
3140
|
+
.setLabel(_('Brake max torque'))
|
|
3141
|
+
.setGroup(_('Brakes'))
|
|
3142
|
+
.setType('Number')
|
|
3143
|
+
.setValue(
|
|
3144
|
+
behaviorContent
|
|
3145
|
+
.getChild('brakeTorqueMax')
|
|
3146
|
+
.getDoubleValue()
|
|
3147
|
+
.toString(10)
|
|
3148
|
+
)
|
|
3149
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3150
|
+
|
|
3151
|
+
behaviorProperties
|
|
3152
|
+
.getOrCreate('handBrakeTorqueMax')
|
|
3153
|
+
.setLabel(_('Hand brake max torque'))
|
|
3154
|
+
.setGroup(_('Brakes'))
|
|
3155
|
+
.setType('Number')
|
|
3156
|
+
.setValue(
|
|
3157
|
+
behaviorContent
|
|
3158
|
+
.getChild('handBrakeTorqueMax')
|
|
3159
|
+
.getDoubleValue()
|
|
3160
|
+
.toString(10)
|
|
3161
|
+
)
|
|
3162
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3163
|
+
|
|
3164
|
+
behaviorProperties
|
|
3165
|
+
.getOrCreate('hasBackWheelDrive')
|
|
3166
|
+
.setValue(
|
|
3167
|
+
behaviorContent.getChild('hasBackWheelDrive').getBoolValue()
|
|
3168
|
+
? 'true'
|
|
3169
|
+
: 'false'
|
|
3170
|
+
)
|
|
3171
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
3172
|
+
.setType('Boolean')
|
|
3173
|
+
.setLabel(_('Back wheel drive'))
|
|
3174
|
+
.setGroup(_('Wheels'))
|
|
3175
|
+
.setAdvanced(true)
|
|
3176
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3177
|
+
|
|
3178
|
+
behaviorProperties
|
|
3179
|
+
.getOrCreate('hasFrontWheelDrive')
|
|
3180
|
+
.setValue(
|
|
3181
|
+
behaviorContent.getChild('hasFrontWheelDrive').getBoolValue()
|
|
3182
|
+
? 'true'
|
|
3183
|
+
: 'false'
|
|
3184
|
+
)
|
|
3185
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
3186
|
+
.setType('Boolean')
|
|
3187
|
+
.setLabel(_('Front wheel drive'))
|
|
3188
|
+
.setGroup(_('Wheels'))
|
|
3189
|
+
.setAdvanced(true)
|
|
3190
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3191
|
+
|
|
3192
|
+
behaviorProperties
|
|
3193
|
+
.getOrCreate('pitchRollAngleMax')
|
|
3194
|
+
.setLabel(_('Pitch and roll max angle'))
|
|
3195
|
+
.setGroup('')
|
|
3196
|
+
.setType('Number')
|
|
3197
|
+
.setMeasurementUnit(gd.MeasurementUnit.getDegreeAngle())
|
|
3198
|
+
.setValue(
|
|
3199
|
+
behaviorContent
|
|
3200
|
+
.getChild('pitchRollAngleMax')
|
|
3201
|
+
.getDoubleValue()
|
|
3202
|
+
.toString(10)
|
|
3203
|
+
)
|
|
3204
|
+
.setAdvanced(true)
|
|
3205
|
+
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden);
|
|
3206
|
+
|
|
3207
|
+
return behaviorProperties;
|
|
3208
|
+
};
|
|
3209
|
+
|
|
3210
|
+
behavior.initializeContent = function (behaviorContent) {
|
|
3211
|
+
behaviorContent.addChild('physics3D').setStringValue('');
|
|
3212
|
+
behaviorContent.addChild('steerAngleMax').setDoubleValue(70);
|
|
3213
|
+
behaviorContent.addChild('beginningSteerSpeed').setDoubleValue(140);
|
|
3214
|
+
behaviorContent.addChild('endSteerSpeed').setDoubleValue(10);
|
|
3215
|
+
behaviorContent.addChild('engineTorqueMax').setDoubleValue(4500);
|
|
3216
|
+
behaviorContent.addChild('engineSpeedMax').setDoubleValue(6000);
|
|
3217
|
+
behaviorContent.addChild('engineInertia').setDoubleValue(0.5);
|
|
3218
|
+
behaviorContent.addChild('reverseGearRatio1').setDoubleValue(-2.9);
|
|
3219
|
+
behaviorContent.addChild('gearRatio1').setDoubleValue(2.66);
|
|
3220
|
+
behaviorContent.addChild('gearRatio2').setDoubleValue(1.78);
|
|
3221
|
+
behaviorContent.addChild('gearRatio3').setDoubleValue(1.3);
|
|
3222
|
+
behaviorContent.addChild('gearRatio4').setDoubleValue(1);
|
|
3223
|
+
behaviorContent.addChild('gearRatio5').setDoubleValue(0.74);
|
|
3224
|
+
behaviorContent.addChild('gearRatio6').setDoubleValue(0);
|
|
3225
|
+
behaviorContent.addChild('backWheelOffsetX').setDoubleValue(0);
|
|
3226
|
+
behaviorContent.addChild('frontWheelOffsetX').setDoubleValue(0);
|
|
3227
|
+
behaviorContent.addChild('wheelOffsetY').setDoubleValue(0);
|
|
3228
|
+
behaviorContent.addChild('wheelOffsetZ').setDoubleValue(0);
|
|
3229
|
+
behaviorContent.addChild('wheelRadius').setDoubleValue(10);
|
|
3230
|
+
behaviorContent.addChild('wheelWidth').setDoubleValue(5);
|
|
3231
|
+
behaviorContent.addChild('brakeTorqueMax').setDoubleValue(1500);
|
|
3232
|
+
behaviorContent.addChild('handBrakeTorqueMax').setDoubleValue(4000);
|
|
3233
|
+
behaviorContent.addChild('hasBackWheelDrive').setBoolValue(false);
|
|
3234
|
+
behaviorContent.addChild('hasFrontWheelDrive').setBoolValue(true);
|
|
3235
|
+
behaviorContent.addChild('pitchRollAngleMax').setDoubleValue(90);
|
|
3236
|
+
};
|
|
3237
|
+
const aut = extension
|
|
3238
|
+
.addBehavior(
|
|
3239
|
+
'PhysicsCar3D',
|
|
3240
|
+
_('3D physics car'),
|
|
3241
|
+
'PhysicsCar3D',
|
|
3242
|
+
_('Simulate a realistic car using the 3D physics engine.'),
|
|
3243
|
+
'',
|
|
3244
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3245
|
+
'PhysicsCar3D',
|
|
3246
|
+
//@ts-ignore The class hierarchy is incorrect leading to a type error, but this is valid.
|
|
3247
|
+
behavior,
|
|
3248
|
+
new gd.BehaviorsSharedData()
|
|
3249
|
+
)
|
|
3250
|
+
.addIncludeFile(
|
|
3251
|
+
'Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js'
|
|
3252
|
+
);
|
|
3253
|
+
|
|
3254
|
+
aut
|
|
3255
|
+
.addScopedAction(
|
|
3256
|
+
'SimulateForwardKey',
|
|
3257
|
+
_('Simulate move forward key press'),
|
|
3258
|
+
_('Simulate a press of the move forward key.'),
|
|
3259
|
+
_('Simulate pressing Forward key for _PARAM0_'),
|
|
3260
|
+
_('Car controls'),
|
|
3261
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3262
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3263
|
+
)
|
|
3264
|
+
.addParameter('object', _('Object'), '', false)
|
|
3265
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3266
|
+
.setFunctionName('simulateForwardKey');
|
|
3267
|
+
|
|
3268
|
+
aut
|
|
3269
|
+
.addScopedAction(
|
|
3270
|
+
'SimulateBackwardKey',
|
|
3271
|
+
_('Simulate move backward key press'),
|
|
3272
|
+
_('Simulate a press of the move backward key.'),
|
|
3273
|
+
_('Simulate pressing Backward key for _PARAM0_'),
|
|
3274
|
+
_('Car controls'),
|
|
3275
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3276
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3277
|
+
)
|
|
3278
|
+
.addParameter('object', _('Object'), '', false)
|
|
3279
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3280
|
+
.setFunctionName('simulateBackwardKey');
|
|
3281
|
+
|
|
3282
|
+
aut
|
|
3283
|
+
.addScopedAction(
|
|
3284
|
+
'SimulateRightKey',
|
|
3285
|
+
_('Simulate move right key press'),
|
|
3286
|
+
_('Simulate a press of the move right key.'),
|
|
3287
|
+
_('Simulate pressing Right key for _PARAM0_'),
|
|
3288
|
+
_('Car controls'),
|
|
3289
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3290
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3291
|
+
)
|
|
3292
|
+
.addParameter('object', _('Object'), '', false)
|
|
3293
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3294
|
+
.setFunctionName('simulateRightKey');
|
|
3295
|
+
|
|
3296
|
+
aut
|
|
3297
|
+
.addScopedAction(
|
|
3298
|
+
'SimulateLeftKey',
|
|
3299
|
+
_('Simulate move left key press'),
|
|
3300
|
+
_('Simulate a press of the move left key.'),
|
|
3301
|
+
_('Simulate pressing Left key for _PARAM0_'),
|
|
3302
|
+
_('Car controls'),
|
|
3303
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3304
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3305
|
+
)
|
|
3306
|
+
.addParameter('object', _('Object'), '', false)
|
|
3307
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3308
|
+
.setFunctionName('simulateLeftKey');
|
|
3309
|
+
|
|
3310
|
+
aut
|
|
3311
|
+
.addScopedAction(
|
|
3312
|
+
'SimulateHandBrakeKey',
|
|
3313
|
+
_('Simulate hand brake key press'),
|
|
3314
|
+
_('Simulate a press of the hand brake key.'),
|
|
3315
|
+
_('Simulate pressing hand brake key for _PARAM0_'),
|
|
3316
|
+
_('Car controls'),
|
|
3317
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3318
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3319
|
+
)
|
|
3320
|
+
.addParameter('object', _('Object'), '', false)
|
|
3321
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3322
|
+
.setFunctionName('simulateHandBrakeKey');
|
|
3323
|
+
|
|
3324
|
+
aut
|
|
3325
|
+
.addScopedAction(
|
|
3326
|
+
'SimulateAcceleratorStick',
|
|
3327
|
+
_('Simulate accelerator stick control'),
|
|
3328
|
+
_('Simulate an accelerator stick control.'),
|
|
3329
|
+
_(
|
|
3330
|
+
'Simulate an accelerator stick control for _PARAM0_ with a _PARAM2_ force'
|
|
3331
|
+
),
|
|
3332
|
+
_('Car controls'),
|
|
3333
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3334
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3335
|
+
)
|
|
3336
|
+
.addParameter('object', _('Object'), '', false)
|
|
3337
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3338
|
+
.addParameter('expression', _('Stick force (between -1 and 1)'))
|
|
3339
|
+
.markAsAdvanced()
|
|
3340
|
+
.setFunctionName('simulateAcceleratorStick');
|
|
3341
|
+
|
|
3342
|
+
aut
|
|
3343
|
+
.addScopedAction(
|
|
3344
|
+
'SimulateSteeringStick',
|
|
3345
|
+
_('Simulate steering stick control'),
|
|
3346
|
+
_('Simulate a steering stick control.'),
|
|
3347
|
+
_(
|
|
3348
|
+
'Simulate a steering stick control for _PARAM0_ with a _PARAM2_ force'
|
|
3349
|
+
),
|
|
3350
|
+
_('Car controls'),
|
|
3351
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3352
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3353
|
+
)
|
|
3354
|
+
.addParameter('object', _('Object'), '', false)
|
|
3355
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3356
|
+
.addParameter('expression', _('Stick force (between -1 and 1)'))
|
|
3357
|
+
.markAsAdvanced()
|
|
3358
|
+
.setFunctionName('simulateSteeringStick');
|
|
3359
|
+
|
|
3360
|
+
aut
|
|
3361
|
+
.addExpressionAndCondition(
|
|
3362
|
+
'number',
|
|
3363
|
+
'SteerAngle',
|
|
3364
|
+
_('Steer angle'),
|
|
3365
|
+
_(
|
|
3366
|
+
'the current steer angle (in degree). The value is negative when cars turn left'
|
|
3367
|
+
),
|
|
3368
|
+
_('the steer angle'),
|
|
3369
|
+
_('Car state'),
|
|
3370
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3371
|
+
)
|
|
3372
|
+
.addParameter('object', _('Object'), '', false)
|
|
3373
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3374
|
+
.useStandardParameters(
|
|
3375
|
+
'number',
|
|
3376
|
+
gd.ParameterOptions.makeNewOptions().setDescription(
|
|
3377
|
+
_('Steer angle (in degree)')
|
|
3378
|
+
)
|
|
3379
|
+
)
|
|
3380
|
+
.setFunctionName('getSteerAngle');
|
|
3381
|
+
|
|
3382
|
+
aut
|
|
3383
|
+
.addExpressionAndCondition(
|
|
3384
|
+
'number',
|
|
3385
|
+
'EngineSpeed',
|
|
3386
|
+
_('Engine speed'),
|
|
3387
|
+
_('the current engine speed (RPM)'),
|
|
3388
|
+
_('the engine speed'),
|
|
3389
|
+
_('Car state'),
|
|
3390
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3391
|
+
)
|
|
3392
|
+
.addParameter('object', _('Object'), '', false)
|
|
3393
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3394
|
+
.useStandardParameters(
|
|
3395
|
+
'number',
|
|
3396
|
+
gd.ParameterOptions.makeNewOptions().setDescription(
|
|
3397
|
+
_('Engine speed (RPM)')
|
|
3398
|
+
)
|
|
3399
|
+
)
|
|
3400
|
+
.setFunctionName('getEngineSpeed');
|
|
3401
|
+
|
|
3402
|
+
aut
|
|
3403
|
+
.addExpressionAndCondition(
|
|
3404
|
+
'number',
|
|
3405
|
+
'CurrentGear',
|
|
3406
|
+
_('Current gear'),
|
|
3407
|
+
_('the current gear (-1 = reverse, 0 = neutral, 1 = 1st gear)'),
|
|
3408
|
+
_('the current gear'),
|
|
3409
|
+
_('Car state'),
|
|
3410
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3411
|
+
)
|
|
3412
|
+
.addParameter('object', _('Object'), '', false)
|
|
3413
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3414
|
+
.useStandardParameters(
|
|
3415
|
+
'number',
|
|
3416
|
+
gd.ParameterOptions.makeNewOptions().setDescription(_('Current gear'))
|
|
3417
|
+
)
|
|
3418
|
+
.setFunctionName('getCurrentGear');
|
|
3419
|
+
|
|
3420
|
+
aut
|
|
3421
|
+
.addScopedCondition(
|
|
3422
|
+
'IsOnFloor',
|
|
3423
|
+
_('Is on floor'),
|
|
3424
|
+
_('Check if any wheel is in contact with the ground.'),
|
|
3425
|
+
_('_PARAM0_ is on floor'),
|
|
3426
|
+
_('Car state'),
|
|
3427
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3428
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3429
|
+
)
|
|
3430
|
+
.addParameter('object', _('Object'), '', false)
|
|
3431
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3432
|
+
.markAsSimple()
|
|
3433
|
+
.setFunctionName('isOnFloor');
|
|
3434
|
+
|
|
3435
|
+
aut
|
|
3436
|
+
.addExpressionAndConditionAndAction(
|
|
3437
|
+
'number',
|
|
3438
|
+
'EngineTorqueMax',
|
|
3439
|
+
_('Engine max torque'),
|
|
3440
|
+
_(
|
|
3441
|
+
'the engine max torque (N·m). It allows cars to climb steep slopes and push heavy obstacles'
|
|
3442
|
+
),
|
|
3443
|
+
_('the engine max torque'),
|
|
3444
|
+
_('Car configuration'),
|
|
3445
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3446
|
+
)
|
|
3447
|
+
.addParameter('object', _('Object'), '', false)
|
|
3448
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3449
|
+
.useStandardParameters(
|
|
3450
|
+
'number',
|
|
3451
|
+
gd.ParameterOptions.makeNewOptions().setDescription(
|
|
3452
|
+
_('Engine max torque (N·m)')
|
|
3453
|
+
)
|
|
3454
|
+
)
|
|
3455
|
+
.setFunctionName('setEngineTorqueMax')
|
|
3456
|
+
.setGetter('getEngineTorqueMax');
|
|
3457
|
+
|
|
3458
|
+
aut
|
|
3459
|
+
.addExpressionAndConditionAndAction(
|
|
3460
|
+
'number',
|
|
3461
|
+
'EngineSpeedMax',
|
|
3462
|
+
_('Engine max speed'),
|
|
3463
|
+
_('the engine max speed (RPM)'),
|
|
3464
|
+
_('the engine max speed'),
|
|
3465
|
+
_('Car configuration'),
|
|
3466
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3467
|
+
)
|
|
3468
|
+
.addParameter('object', _('Object'), '', false)
|
|
3469
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3470
|
+
.useStandardParameters(
|
|
3471
|
+
'number',
|
|
3472
|
+
gd.ParameterOptions.makeNewOptions().setDescription(
|
|
3473
|
+
_('Engine max speed (RPM)')
|
|
3474
|
+
)
|
|
3475
|
+
)
|
|
3476
|
+
.setFunctionName('setEngineSpeedMax')
|
|
3477
|
+
.setGetter('getEngineSpeedMax');
|
|
3478
|
+
|
|
3479
|
+
aut
|
|
3480
|
+
.addExpressionAndConditionAndAction(
|
|
3481
|
+
'number',
|
|
3482
|
+
'EngineInertia',
|
|
3483
|
+
_('Engine inertia'),
|
|
3484
|
+
_('the engine inertia (kg·m²). It slows down car acceleration'),
|
|
3485
|
+
_('the engine inertia'),
|
|
3486
|
+
_('Car configuration'),
|
|
3487
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
3488
|
+
)
|
|
3489
|
+
.addParameter('object', _('Object'), '', false)
|
|
3490
|
+
.addParameter('behavior', _('Behavior'), 'PhysicsCar3D')
|
|
3491
|
+
.useStandardParameters(
|
|
3492
|
+
'number',
|
|
3493
|
+
gd.ParameterOptions.makeNewOptions().setDescription(
|
|
3494
|
+
_('Engine inertia (kg·m²)')
|
|
3495
|
+
)
|
|
3496
|
+
)
|
|
3497
|
+
.setFunctionName('setEngineInertia')
|
|
3498
|
+
.setGetter('getEngineInertia');
|
|
3499
|
+
}
|
|
3500
|
+
|
|
2457
3501
|
extension
|
|
2458
3502
|
.addCondition(
|
|
2459
3503
|
'IsObjectOnGivenFloor',
|
|
@@ -2461,8 +3505,8 @@ module.exports = {
|
|
|
2461
3505
|
_('Check if a 3D physics character is on a given platform.'),
|
|
2462
3506
|
_('_PARAM0_ is on platform _PARAM2_'),
|
|
2463
3507
|
_('Collision'),
|
|
2464
|
-
'JsPlatform/Extensions/
|
|
2465
|
-
'JsPlatform/Extensions/
|
|
3508
|
+
'JsPlatform/Extensions/physics_car3d.svg',
|
|
3509
|
+
'JsPlatform/Extensions/physics_car3d.svg'
|
|
2466
3510
|
)
|
|
2467
3511
|
.addParameter('objectList', _('Object'), '', false)
|
|
2468
3512
|
.addParameter('behavior', _('Behavior'), 'PhysicsCharacter3D')
|