diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index d137b2a..26b8df5 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -465,15 +465,18 @@ public sealed class BSPrim : BSPhysObject | |||
465 | set { | 465 | set { |
466 | Vehicle type = (Vehicle)value; | 466 | Vehicle type = (Vehicle)value; |
467 | 467 | ||
468 | // Tell the scene about the vehicle so it will get processing each frame. | ||
469 | PhysicsScene.VehicleInSceneTypeChanged(this, type); | ||
470 | |||
471 | PhysicsScene.TaintedObject("setVehicleType", delegate() | 468 | PhysicsScene.TaintedObject("setVehicleType", delegate() |
472 | { | 469 | { |
473 | // Done at taint time so we're sure the physics engine is not using the variables | 470 | // Done at taint time so we're sure the physics engine is not using the variables |
474 | // Vehicle code changes the parameters for this vehicle type. | 471 | // Vehicle code changes the parameters for this vehicle type. |
475 | _vehicle.ProcessTypeChange(type); | 472 | _vehicle.ProcessTypeChange(type); |
476 | ActivateIfPhysical(false); | 473 | ActivateIfPhysical(false); |
474 | |||
475 | // If an active vehicle, register the vehicle code to be called before each step | ||
476 | if (_vehicle.Type == Vehicle.TYPE_NONE) | ||
477 | UnRegisterPreStepAction("BSPrim.Vehicle", LocalID); | ||
478 | else | ||
479 | RegisterPreStepAction("BSPrim.Vehicle", LocalID, _vehicle.Step); | ||
477 | }); | 480 | }); |
478 | } | 481 | } |
479 | } | 482 | } |
@@ -509,23 +512,6 @@ public sealed class BSPrim : BSPhysObject | |||
509 | }); | 512 | }); |
510 | } | 513 | } |
511 | 514 | ||
512 | // Called each simulation step to advance vehicle characteristics. | ||
513 | // Called from Scene when doing simulation step so we're in taint processing time. | ||
514 | public override void StepVehicle(float timeStep) | ||
515 | { | ||
516 | if (IsPhysical && _vehicle.IsActive) | ||
517 | { | ||
518 | _vehicle.Step(timeStep); | ||
519 | /* // TEST TEST DEBUG DEBUG -- trying to reduce the extra action of Bullet simulation step | ||
520 | PhysicsScene.PostTaintObject("BSPrim.StepVehicles", LocalID, delegate() | ||
521 | { | ||
522 | // This resets the interpolation values and recomputes the tensor variables | ||
523 | BulletSimAPI.SetCenterOfMassByPosRot2(BSBody.ptr, ForcePosition, ForceOrientation); | ||
524 | }); | ||
525 | */ | ||
526 | } | ||
527 | } | ||
528 | |||
529 | // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more | 515 | // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more |
530 | public override void SetVolumeDetect(int param) { | 516 | public override void SetVolumeDetect(int param) { |
531 | bool newValue = (param != 0); | 517 | bool newValue = (param != 0); |