PRIM TYPE CYLINDER

From Second Life Wiki
Revision as of 11:57, 16 March 2009 by Strife Onizuka (talk | contribs)
Jump to navigation Jump to search

Description

Constant: integer PRIM_TYPE_CYLINDER = 1;

The integer constant PRIM_TYPE_CYLINDER has the value 1

PRIM_TYPE_CYLINDER is a parameter of PRIM_TYPE used to make prim into a cylinder and to change specific properties that define the shape of that cylinder.

PRIM_TYPE

[ PRIM_TYPE, PRIM_TYPE_CYLINDER, integer hole_shape, vector cut, float hollow, vector twist, vector top_size, vector top_shear ]
• integer hole_shape PRIM_HOLE_* flag
• vector cut x and y range from 0.0 to 1.0, x must be at least 0.05 smaller than y (z is ignored)
• float hollow ranges from 0.0 (solid) to 0.95 (maximum hollowed)
• vector twist ranges from -1.0 (-180 degree in the edit window) to 1.0 (+180 degree in the edit window) for both x and y (z is ignored)
• vector top_size ranges from 0.0 to 1.0 to 2.0 for both x and y (z is ignored)!
• vector top_shear ranges from -0.5 to 0.5 for both x and y (z is ignored)
hole_shape Flags Shape hole_shape Flags Shape
PRIM_HOLE_DEFAULT 0x00 Default PRIM_HOLE_SQUARE 0x20 Square
PRIM_HOLE_CIRCLE 0x10 Circle PRIM_HOLE_TRIANGLE 0x30 Triangle

PRIM_TYPE_LEGACY

[ 1, PRIM_TYPE_CYLINDER, vector cut, float hollow, float twist, vector top_size, vector top_shear ]
• vector cut x and y range from 0.0 to 1.0, x must be at least 0.05 smaller than y (z is ignored)
• float hollow ranges from 0.0 (solid) to 0.95 (maximum hollowed)
• float twist ranges from -0.5 (-180 degree in the edit window) to 0.5 (+180 degree in the edit window)
• vector top_size ranges from 0.0 to 1.0 for both x and y (z is ignored)!
• vector top_shear ranges from -0.5 to 0.5 for both x and y (z is ignored)

This is the old PRIM_TYPE format for cylinders (PRIM_TYPE used to be 1 instead of 9). Use the new format unless you are maintaining old code.

Caveats

  • top_size and client values are different, the ranges do not line up, conversion is required. This simple equation can be used: answer = 1.0 - value. See top_size Explained for more information.


Related Articles

Constants

•  PRIM_TYPE
•  CHANGED_SHAPE

Functions

•  llSetPrimitiveParams
•  llSetLinkPrimitiveParams
•  llGetPrimitiveParams

Events

•  changed

Examples

<lsl>llSetPrimitiveParams([PRIM_TYPE,

                       PRIM_TYPE_CYLINDER, 
                           PRIM_HOLE_DEFAULT,  // hole_shape
                           <0.00, 1.0, 0.0>,   // cut
                           0.0,                // hollow
                           <0.0, 0.0, 0.0>,    // twist
                           <1.0, 1.0, 0.0>,    // top_size
                           <0.0, 0.0, 0.0>     // top_Shear
                     ]);</lsl>

Deep Notes

PRIM_TYPE top_size and client taper conversion
Range[1] Top
Tapered
No
Tapering
Bottom
Tapered
Client [-1, 1] 1.0 0.0 -1.0
PRIM_TYPE [0, 2] 0.0 1.0 2.0
LEGACY [0, 1] 0.0 1.0 NA
Client < 1.11 [0, 1] 0.0 1.0 NA

top_size Explained

When the original PRIM_TYPE interface was retired (PRIM_TYPE_LEGACY, SL 1.5), the new PRIM_TYPE interface did not yet support tapering of the bottom of the prim, this feature wasn't added until SL 1.11 (two years later). Instead of retiring the new PRIM_TYPE when it was added, the range of top_size was enlarged; meanwhile in the client they redefined the parameter and it's values. This redefinition and range enlargement resulted in two interfaces that did the same thing but achieved it through different values. Meanwhile PRIM_TYPE_LEGACY's interface was not updated to support tapering of the bottom of the prim. Consequently all three interfaces have different ranges, making for a rather nasty caveat.

Search JIRA for related Issues

Footnotes

  1. ^ The ranges in this article are written in Interval Notation.

Signature

integer PRIM_TYPE_CYLINDER = 1;