Difference between revisions of "ObjectUpdate"
m (saving before sleep) |
|||
(5 intermediate revisions by 3 users not shown) | |||
Line 81: | Line 81: | ||
* ID is the region local id of the task, these are used for most operations in place of the tasks uuid. | * ID is the region local id of the task, these are used for most operations in place of the tasks uuid. | ||
* State is a legacy field, unused in everything but grass. With grass it is used to determine species of grass. | * State is a legacy field, unused in everything but grass. With grass it is used to determine species of grass. | ||
* | * [[PCode]] is the type of object represented by this task. Possibles include avatars, grass, trees, volumes. | ||
* Material represents the physical material that makes up the task. Possibles include wood, glass, flesh, rubber. | * Material represents the physical material that makes up the task. Possibles include wood, glass, flesh, rubber. | ||
* ClickAction is the default action to take when the task is clicked on in the viewer. Possibles include pay, sit, touch, open. | * ClickAction is the default action to take when the task is clicked on in the viewer. Possibles include pay, sit, touch, open. | ||
* ObjectData contains a variable precision set of values for the object. They can include position, velocity, | * ObjectData contains a variable precision set of values for the object. They can include position, velocity, rotation. | ||
* Scale contains the LLVector3 size of the object or task. Is ignored for a few PCodes. | |||
* ParentID contains localid of any task that this task is a child of, used for the creation of object or attachments. Should be 0 if not present. | |||
* UpdateFlags is used to give various pieces of information about the object to the viewer. Stores things like empty inventory, scripted. | |||
* Sound is the asset uuid of any attached looped sound to play. | |||
* OwnerID is the uuid of the owner of the prim. Is null if there is no attached looped sound or a particle source attached to the prim. | |||
* Flags used to store flags related to attached sounds. | |||
* Gain is the gain of the attached looped sound to apply. | |||
* Radius is the radius from the center of the prim that the attached looped sound should be audible from. | |||
* JointType is the type of joint associated with the task. Should be unused. Legacy. | |||
* JointPivot is the offset from the center of the prim used to pivot around. Should be unused. Legacy. | |||
* JointAxisOrAnchor is the offset or axis used for certain joint types. Should be unused. Legacy. | |||
* Text is the data related to task [[llSetText]]. | |||
* TextColor is packed 4 byte RGBA representation of a color. Alpha value is inverted. | |||
* MediaURL is both the the url for any media to be attached to the task. Is always a webpage type. | |||
* NameValue is a string that contains any name value pairs specific to the task. Most used for avatar names. | |||
* [[TextureEntry]] is a full property list for each tasks face, includes textures, colors. {{LSLGC|Face}} | |||
* [[TextureAnim]] is the properties to set up texture animations of the face of the task. [[llSetTextureAnim]] | |||
* [[PSBlock]] is the attached particle details for the task. [[llParticleSystem]] | |||
* [[ExtraParams]] is data related to flexible primitives, sculpt data, or attached light data. | |||
* Data is generic appended data. | |||
---- | |||
=== Generic Object Properties === | |||
This section explains details about properties that are unpacked and parsed regardless of PCode. These apply to most PCode types. | |||
CRC is copied directly from each message and is not checked, appears to be used for object cache only. | |||
Changing material type sets the task as having moved, undamped. | |||
If generic data exists, it is cleared and replaced when an update is received. (Data field.) | |||
==== ObjectData Format ==== | |||
The contents of ObjectData are dependent on the size of the field. | |||
===== Size of 76 bytes ===== | |||
* Foot collision plane. LLVector4. | |||
Angular velocity is ignored and set to 0. Falls through to 60 bytes parser. | |||
===== Size of 60 bytes ===== | |||
32 bit precision update. | |||
* Position. LLVector3. | |||
* Velocity. LLVector3. | |||
* Acceleration. LLVector3. | |||
* Rotation. LLVector3. | |||
* Angular velocity. LLVector3. | |||
===== Size of 48 bytes ===== | |||
* Foot collision plane. LLVector4 | |||
Falls through to 32 bytes parser. | |||
===== Size of 32 bytes ===== | |||
16 bit precision update. | |||
* Position. U16Vec3. | |||
* Velocity. U16Vec3. | |||
* Acceleration. U16Vec3. | |||
* Rotation. U16Rot(4xU16). | |||
* Angular velocity. LLVector3. | |||
===== Size of 16 ===== | |||
8 bit precision update. | |||
* Position. U8Vec3. | |||
* Velocity. U8Vec3. | |||
* Acceleration. U8Vec3. | |||
* Rotation. U8Rot(4xU8). | |||
* Angular velocity. U8Vec3 | |||
==== Attached Sounds ==== | |||
Attached sounds use the following fields within the ObjectUpdate packet. | |||
* Flags | |||
* Gain | |||
* Radius | |||
* Sound | |||
* OwnerID | |||
Attached sounds volume is only adjusted when an object update it received for that specific task. Is not affected by adjusting SFX volume or muting SFX. (BUG?) | |||
OwnerID is used to allow muting of attached sounds and particles only. | |||
[[Category:Messages]] | [[Category:Messages]] |
Latest revision as of 22:08, 22 June 2009
Message Layout
{ ObjectUpdate High 12 Trusted Zerocoded { RegionData Single { RegionHandle U64 } { TimeDilation U16 } } { ObjectData Variable { ID U32 } { State U8 } { FullID LLUUID } { CRC U32 } { PCode U8 } { Material U8 } { ClickAction U8 } { Scale LLVector3 } { ObjectData Variable 1 } { ParentID U32 } { UpdateFlags U32 } { PathCurve U8 } { ProfileCurve U8 } { PathBegin U16 } { PathEnd U16 } { PathScaleX U8 } { PathScaleY U8 } { PathShearX U8 } { PathShearY U8 } { PathTwist S8 } { PathTwistBegin S8 } { PathRadiusOffset S8 } { PathTaperX S8 } { PathTaperY S8 } { PathRevolutions U8 } { PathSkew S8 } { ProfileBegin U16 } { ProfileEnd U16 } { ProfileHollow U16 } { TextureEntry Variable 2 } { TextureAnim Variable 1 } { NameValue Variable 2 } { Data Variable 2 } { Text Variable 1 } { TextColor Fixed 4 } { MediaURL Variable 1 } { PSBlock Variable 1 } { ExtraParams Variable 1 } { Sound LLUUID } { OwnerID LLUUID } { Gain F32 } { Flags U8 } { Radius F32 } { JointType U8 } { JointPivot LLVector3 } { JointAxisOrAnchor LLVector3 } } }
Usage and Notes
RegionData
RegionHandle is the global coordinates of the simulator compressed and encoded into a single U64, with each coordinate taking up 32 bits. It can be visualized as XXXX|YYYY where each character is 8bits.
TimeDilation is used to update the regions time dilation. It is cast to a F32 and then divided by 65535. for actual value.
ObjectData
- FullID is the uuid of the task.
- ID is the region local id of the task, these are used for most operations in place of the tasks uuid.
- State is a legacy field, unused in everything but grass. With grass it is used to determine species of grass.
- PCode is the type of object represented by this task. Possibles include avatars, grass, trees, volumes.
- Material represents the physical material that makes up the task. Possibles include wood, glass, flesh, rubber.
- ClickAction is the default action to take when the task is clicked on in the viewer. Possibles include pay, sit, touch, open.
- ObjectData contains a variable precision set of values for the object. They can include position, velocity, rotation.
- Scale contains the LLVector3 size of the object or task. Is ignored for a few PCodes.
- ParentID contains localid of any task that this task is a child of, used for the creation of object or attachments. Should be 0 if not present.
- UpdateFlags is used to give various pieces of information about the object to the viewer. Stores things like empty inventory, scripted.
- Sound is the asset uuid of any attached looped sound to play.
- OwnerID is the uuid of the owner of the prim. Is null if there is no attached looped sound or a particle source attached to the prim.
- Flags used to store flags related to attached sounds.
- Gain is the gain of the attached looped sound to apply.
- Radius is the radius from the center of the prim that the attached looped sound should be audible from.
- JointType is the type of joint associated with the task. Should be unused. Legacy.
- JointPivot is the offset from the center of the prim used to pivot around. Should be unused. Legacy.
- JointAxisOrAnchor is the offset or axis used for certain joint types. Should be unused. Legacy.
- Text is the data related to task llSetText.
- TextColor is packed 4 byte RGBA representation of a color. Alpha value is inverted.
- MediaURL is both the the url for any media to be attached to the task. Is always a webpage type.
- NameValue is a string that contains any name value pairs specific to the task. Most used for avatar names.
- TextureEntry is a full property list for each tasks face, includes textures, colors. Face
- TextureAnim is the properties to set up texture animations of the face of the task. llSetTextureAnim
- PSBlock is the attached particle details for the task. llParticleSystem
- ExtraParams is data related to flexible primitives, sculpt data, or attached light data.
- Data is generic appended data.
Generic Object Properties
This section explains details about properties that are unpacked and parsed regardless of PCode. These apply to most PCode types.
CRC is copied directly from each message and is not checked, appears to be used for object cache only.
Changing material type sets the task as having moved, undamped.
If generic data exists, it is cleared and replaced when an update is received. (Data field.)
ObjectData Format
The contents of ObjectData are dependent on the size of the field.
Size of 76 bytes
- Foot collision plane. LLVector4.
Angular velocity is ignored and set to 0. Falls through to 60 bytes parser.
Size of 60 bytes
32 bit precision update.
- Position. LLVector3.
- Velocity. LLVector3.
- Acceleration. LLVector3.
- Rotation. LLVector3.
- Angular velocity. LLVector3.
Size of 48 bytes
- Foot collision plane. LLVector4
Falls through to 32 bytes parser.
Size of 32 bytes
16 bit precision update.
- Position. U16Vec3.
- Velocity. U16Vec3.
- Acceleration. U16Vec3.
- Rotation. U16Rot(4xU16).
- Angular velocity. LLVector3.
Size of 16
8 bit precision update.
- Position. U8Vec3.
- Velocity. U8Vec3.
- Acceleration. U8Vec3.
- Rotation. U8Rot(4xU8).
- Angular velocity. U8Vec3
Attached Sounds
Attached sounds use the following fields within the ObjectUpdate packet.
- Flags
- Gain
- Radius
- Sound
- OwnerID
Attached sounds volume is only adjusted when an object update it received for that specific task. Is not affected by adjusting SFX volume or muting SFX. (BUG?)
OwnerID is used to allow muting of attached sounds and particles only.