llSetLinkMotorParam

From Second Life Wiki
Jump to navigation Jump to search
Emblem-important-yellow.png LSL Feature Request
The described function does not exist. This article is a feature request.

Summary

Function: llSetLinkMotorParam( integer linkset, list param, integer local, integer motor type );

It can be used as a wheel on a car, jet engine for planes, wheel-fins in a water-pedal boat, or a servo piston for hydraulic lift.

List Parameters

[DAMPER_SHOCK, (vector)Strength] 0.0-1.0, Zero for soild static. How much it takes to cancel out reaction to the whole on each axis.

[SPRING_RECOIL, (vector)Rate] 0.0-1.0, Zero for no recoil. How fast it returns to its place on each axis.

[SET_AXLE, (vector)Range] 0.0-1.0, Zero for no rotational. Assigns which vector as an free rotating axle with given range. 1.0 = 360* degree.

[SET_FRICTION, (float)Strength] 0.0-1.0, Zero for none, One for complete grip(think like a gear cog). For set of grip to climb on.

[MOTOR_DRIVE, (vector)Power] 0.0-1.0, Zero for no drive, One for full drive power from the main Vehicle's Linear/Angular Motor input. Using 0.1 to 0.99 divides the power usage from the main motor as given.

If Motor type is LINEAR, it moves along the axis.
If Motor type is ANGULAR, it rotate around the axis. ANGULAR is limited by SET_AXLE range on given axle.
If Motor type is NONE, it cancels MOTOR_DRIVE Param.
If Motor type is OMEGA, it uses both Motor drive. ANGULAR is limited by SET_AXLE range on given axle.

• integer linkset assigns which child prim in a linkset, can not be parent prim.
• list param assign which child prim in a linkset, can not be parent prim.
• integer local boolean, if TRUE assign as local to parent prim. If FALSE assigned as global to region coordinate system.
• integer motor type assigns to give type of motor to be given from Vehicle's Param motor, Linear and Angular motors.

Caveats

The object would have to be physical, unless it can be proven done with setting the child prim to be only physical.

Examples

Notes

Those Child-prims are actually meant to be physical in-world, to the surface. However, They should ignore collision to itself and the whole linkset they are linked to. Whenever a child-prim is set with a motor type of "Linear", the vehicle param's linear motor should be disabled from applying to parent prim. Same for Angular motor as well... However, when one child-prim has Omega motor type, it disable both of Linear & Angular from the parent-prim. They would need to be disabled for possible force source issue with steering and fine movements.

With llSetVehicleType(); should apply the behavior of the child-prim motor.
Examples:

  • VEHICLE_TYPE_SLED & VEHICLE_TYPE_NONE would results as having no motor param.
  • VEHICLE_TYPE_CAR would result having a rotational motor push from an axle's path.
  • VEHICLE_TYPE_BOAT & VEHICLE_TYPE_AIRPLANE would result having a rotational motor push along its axis in screw style. (like a fan blowing one way)

Deep Notes

Signature

//function void llSetLinkMotorParam( integer linkset, list param, integer local, integer motor type );