<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stickman+Ingmann</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stickman+Ingmann"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Stickman_Ingmann"/>
	<updated>2026-05-09T23:42:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207677</id>
		<title>Attachment</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207677"/>
		<updated>2018-10-05T08:38:36Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: a word&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}&lt;br /&gt;
{{Otheruses4‎|attachments|[[LSL]] related information about attachments|:Category:LSL Attachment|opensource specs|Attachment (OS)}}&lt;br /&gt;
&lt;br /&gt;
An attachment is an object (clothing, weapons, jewelry, shoes, etc) that can be attached to an [[avatar]] at a specific location. Usually location is set by the creator of the object. The default location otherwise is the [[ATTACH_RHAND|right hand]].&lt;br /&gt;
&lt;br /&gt;
Attachments are linked to bones. When a bone is animated, all attachment locations linked to that bone will move identically to the bone they are linked to.&lt;br /&gt;
&lt;br /&gt;
The following is a list of attachments and the bones they are attached to.&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#vardefineecho:style|display:inline-block; vertical-align:top; border-top: 1px dotted #AAA; margin-right: 1em;}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Head&#039;&#039;&#039;&lt;br /&gt;
** Skull&lt;br /&gt;
** Nose&lt;br /&gt;
** Left Ear&lt;br /&gt;
** Right Ear&lt;br /&gt;
** Mouth&lt;br /&gt;
** Chin&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeRight&#039;&#039;&#039;&lt;br /&gt;
** Right Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceJaw&#039;&#039;&#039;&lt;br /&gt;
** Jaw&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;&amp;gt;The alternative eye bones do not have saccades like the default eyes. They remain still unless animated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceTongueTip&#039;&#039;&#039;&lt;br /&gt;
** Tongue&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Neck&#039;&#039;&#039;&lt;br /&gt;
** Neck&lt;br /&gt;
* &#039;&#039;&#039;Bone: Chest&#039;&#039;&#039;&lt;br /&gt;
** Spine&lt;br /&gt;
** Chest&lt;br /&gt;
* &#039;&#039;&#039;Bone: Torso&#039;&#039;&#039;&lt;br /&gt;
** Left Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;&amp;gt;The &amp;quot;pec&amp;quot; attachment slots are unfortunately named, as they attach to the central bone of the avatar&#039;s torso, and the pectoral muscles are associated with the upper or chest bone.&amp;lt;/ref &amp;gt;&lt;br /&gt;
** Right Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Pelvis&#039;&#039;&#039;&lt;br /&gt;
** Pelvis&lt;br /&gt;
** Stomach&lt;br /&gt;
* &#039;&#039;&#039;Bone: Groin&#039;&#039;&#039;&lt;br /&gt;
** Groin&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderLeft&#039;&#039;&#039;&lt;br /&gt;
** L Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowLeft&#039;&#039;&#039;&lt;br /&gt;
** L Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Left&#039;&#039;&#039;&lt;br /&gt;
** Left Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;&amp;gt;Added with the Bento Skeleton, December 2015&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarRight&#039;&#039;&#039;&lt;br /&gt;
** Right Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderRight&#039;&#039;&#039;&lt;br /&gt;
** R Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowRight&#039;&#039;&#039;&lt;br /&gt;
** R Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Right&#039;&#039;&#039;&lt;br /&gt;
** Right Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hip&lt;br /&gt;
** L Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeLeft&#039;&#039;&#039;&lt;br /&gt;
** L Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Foot&amp;lt;ref name=&amp;quot;foot&amp;quot;&amp;gt;Note: The leg bone hierarchy is Hip -&amp;gt; Knee -&amp;gt; Ankle -&amp;gt; Foot -&amp;gt; Toe. Foot and toe are not rigged in the default avatar, as the mesh foot is rigged to the ankle bone. Custom rigged mesh that use the foot bone may cause unexpected issues with unrigged attachments.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hip&lt;br /&gt;
** R Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeRight&#039;&#039;&#039;&lt;br /&gt;
** R Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleRight&#039;&#039;&#039;&lt;br /&gt;
** Right Foot&amp;lt;ref name=&amp;quot;foot&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail1&#039;&#039;&#039;&lt;br /&gt;
** Tail Base&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail6&#039;&#039;&#039;&lt;br /&gt;
** Tail Tip&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Video Tutorial/Wearing attachments]]&lt;br /&gt;
* [[Video Tutorial/Editing attachments]]&lt;br /&gt;
* [[Video Tutorial/Retrieving lost attachments]]&lt;br /&gt;
* [[What are HUD attachments]]&lt;br /&gt;
* [[Video Tutorial/Advanced attachment adjustment]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207676</id>
		<title>Attachment</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207676"/>
		<updated>2018-10-05T08:37:14Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Documented the missing &amp;quot;ankle&amp;quot; attachment slot.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}&lt;br /&gt;
{{Otheruses4‎|attachments|[[LSL]] related information about attachments|:Category:LSL Attachment|opensource specs|Attachment (OS)}}&lt;br /&gt;
&lt;br /&gt;
An attachment is an object (clothing, weapons, jewelry, shoes, etc) that can be attached to an [[avatar]] at a specific location. Usually location is set by the creator of the object. The default location otherwise is the [[ATTACH_RHAND|right hand]].&lt;br /&gt;
&lt;br /&gt;
Attachments are linked to bones. When a bone is animated, all attachment locations linked to that bone will move identically to the bone they are linked to.&lt;br /&gt;
&lt;br /&gt;
The following is a list of attachments and the bones they are attached to.&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#vardefineecho:style|display:inline-block; vertical-align:top; border-top: 1px dotted #AAA; margin-right: 1em;}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Head&#039;&#039;&#039;&lt;br /&gt;
** Skull&lt;br /&gt;
** Nose&lt;br /&gt;
** Left Ear&lt;br /&gt;
** Right Ear&lt;br /&gt;
** Mouth&lt;br /&gt;
** Chin&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeRight&#039;&#039;&#039;&lt;br /&gt;
** Right Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceJaw&#039;&#039;&#039;&lt;br /&gt;
** Jaw&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;&amp;gt;The alternative eye bones do not have saccades like the default eyes. They remain still unless animated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceTongueTip&#039;&#039;&#039;&lt;br /&gt;
** Tongue&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Neck&#039;&#039;&#039;&lt;br /&gt;
** Neck&lt;br /&gt;
* &#039;&#039;&#039;Bone: Chest&#039;&#039;&#039;&lt;br /&gt;
** Spine&lt;br /&gt;
** Chest&lt;br /&gt;
* &#039;&#039;&#039;Bone: Torso&#039;&#039;&#039;&lt;br /&gt;
** Left Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;&amp;gt;The &amp;quot;pec&amp;quot; attachment slots are unfortunately named, as they attach to the central bone of the avatar&#039;s torso, and the pectoral muscles are associated with the upper or chest bone.&amp;lt;/ref &amp;gt;&lt;br /&gt;
** Right Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Pelvis&#039;&#039;&#039;&lt;br /&gt;
** Pelvis&lt;br /&gt;
** Stomach&lt;br /&gt;
* &#039;&#039;&#039;Bone: Groin&#039;&#039;&#039;&lt;br /&gt;
** Groin&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderLeft&#039;&#039;&#039;&lt;br /&gt;
** L Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowLeft&#039;&#039;&#039;&lt;br /&gt;
** L Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Left&#039;&#039;&#039;&lt;br /&gt;
** Left Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;&amp;gt;Added with the Bento Skeleton, December 2015&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarRight&#039;&#039;&#039;&lt;br /&gt;
** Right Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderRight&#039;&#039;&#039;&lt;br /&gt;
** R Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowRight&#039;&#039;&#039;&lt;br /&gt;
** R Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Right&#039;&#039;&#039;&lt;br /&gt;
** Right Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hip&lt;br /&gt;
** L Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeLeft&#039;&#039;&#039;&lt;br /&gt;
** L Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Foot&amp;lt;ref name=&amp;quot;foot&amp;quot;&amp;gt;Note: The leg bone hierarchy is Hip -&amp;gt; Knee -&amp;gt; Ankle -&amp;gt; Foot -&amp;gt; Toe. Foot and toe are not rigged in the default skeleton, as the mesh foot is rigged to the ankle bone. Custom rigged mesh that use the foot bone may cause unexpected issues with unrigged attachments.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hip&lt;br /&gt;
** R Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeRight&#039;&#039;&#039;&lt;br /&gt;
** R Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleRight&#039;&#039;&#039;&lt;br /&gt;
** Right Foot&amp;lt;ref name=&amp;quot;foot&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail1&#039;&#039;&#039;&lt;br /&gt;
** Tail Base&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail6&#039;&#039;&#039;&lt;br /&gt;
** Tail Tip&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Video Tutorial/Wearing attachments]]&lt;br /&gt;
* [[Video Tutorial/Editing attachments]]&lt;br /&gt;
* [[Video Tutorial/Retrieving lost attachments]]&lt;br /&gt;
* [[What are HUD attachments]]&lt;br /&gt;
* [[Video Tutorial/Advanced attachment adjustment]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207675</id>
		<title>Attachment</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207675"/>
		<updated>2018-10-05T08:14:43Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Removed personal frustration from pectoral footnote.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}&lt;br /&gt;
{{Otheruses4‎|attachments|[[LSL]] related information about attachments|:Category:LSL Attachment|opensource specs|Attachment (OS)}}&lt;br /&gt;
&lt;br /&gt;
An attachment is an object (clothing, weapons, jewelry, shoes, etc) that can be attached to an [[avatar]] at a specific location. Usually location is set by the creator of the object. The default location otherwise is the [[ATTACH_RHAND|right hand]].&lt;br /&gt;
&lt;br /&gt;
Attachments are linked to bones. When a bone is animated, all attachment locations linked to that bone will move identically to the bone they are linked to.&lt;br /&gt;
&lt;br /&gt;
The following is a list of attachments and the bones they are attached to.&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#vardefineecho:style|display:inline-block; vertical-align:top; border-top: 1px dotted #AAA; margin-right: 1em;}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Head&#039;&#039;&#039;&lt;br /&gt;
** Skull&lt;br /&gt;
** Nose&lt;br /&gt;
** Left Ear&lt;br /&gt;
** Right Ear&lt;br /&gt;
** Mouth&lt;br /&gt;
** Chin&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeRight&#039;&#039;&#039;&lt;br /&gt;
** Right Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceJaw&#039;&#039;&#039;&lt;br /&gt;
** Jaw&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;&amp;gt;The alternative eye bones do not have saccades like the default eyes. They remain still unless animated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceTongueTip&#039;&#039;&#039;&lt;br /&gt;
** Tongue&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Neck&#039;&#039;&#039;&lt;br /&gt;
** Neck&lt;br /&gt;
* &#039;&#039;&#039;Bone: Chest&#039;&#039;&#039;&lt;br /&gt;
** Spine&lt;br /&gt;
** Chest&lt;br /&gt;
* &#039;&#039;&#039;Bone: Torso&#039;&#039;&#039;&lt;br /&gt;
** Left Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;&amp;gt;The &amp;quot;pec&amp;quot; attachment slots are unfortunately named, as they attach to the central bone of the avatar&#039;s torso, and the pectoral muscles are associated with the upper or chest bone.&amp;lt;/ref &amp;gt;&lt;br /&gt;
** Right Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Pelvis&#039;&#039;&#039;&lt;br /&gt;
** Pelvis&lt;br /&gt;
** Stomach&lt;br /&gt;
* &#039;&#039;&#039;Bone: Groin&#039;&#039;&#039;&lt;br /&gt;
** Groin&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderLeft&#039;&#039;&#039;&lt;br /&gt;
** L Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowLeft&#039;&#039;&#039;&lt;br /&gt;
** L Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Left&#039;&#039;&#039;&lt;br /&gt;
** Left Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;&amp;gt;Added with the Bento Skeleton, December 2015&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarRight&#039;&#039;&#039;&lt;br /&gt;
** Right Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderRight&#039;&#039;&#039;&lt;br /&gt;
** R Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowRight&#039;&#039;&#039;&lt;br /&gt;
** R Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Right&#039;&#039;&#039;&lt;br /&gt;
** Right Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hip&lt;br /&gt;
** L Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeLeft&#039;&#039;&#039;&lt;br /&gt;
** L Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Foot&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hip&lt;br /&gt;
** R Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeRight&#039;&#039;&#039;&lt;br /&gt;
** R Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleRight&#039;&#039;&#039;&lt;br /&gt;
** Right Foot&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail1&#039;&#039;&#039;&lt;br /&gt;
** Tail Base&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail6&#039;&#039;&#039;&lt;br /&gt;
** Tail Tip&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Video Tutorial/Wearing attachments]]&lt;br /&gt;
* [[Video Tutorial/Editing attachments]]&lt;br /&gt;
* [[Video Tutorial/Retrieving lost attachments]]&lt;br /&gt;
* [[What are HUD attachments]]&lt;br /&gt;
* [[Video Tutorial/Advanced attachment adjustment]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207674</id>
		<title>Attachment</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1207674"/>
		<updated>2018-10-05T08:10:55Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added attachment points from Bento&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}&lt;br /&gt;
{{Otheruses4‎|attachments|[[LSL]] related information about attachments|:Category:LSL Attachment|opensource specs|Attachment (OS)}}&lt;br /&gt;
&lt;br /&gt;
An attachment is an object (clothing, weapons, jewelry, shoes, etc) that can be attached to an [[avatar]] at a specific location. Usually location is set by the creator of the object. The default location otherwise is the [[ATTACH_RHAND|right hand]].&lt;br /&gt;
&lt;br /&gt;
Attachments are linked to bones. When a bone is animated, all attachment locations linked to that bone will move identically to the bone they are linked to.&lt;br /&gt;
&lt;br /&gt;
The following is a list of attachments and the bones they are attached to.&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#vardefineecho:style|display:inline-block; vertical-align:top; border-top: 1px dotted #AAA; margin-right: 1em;}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Head&#039;&#039;&#039;&lt;br /&gt;
** Skull&lt;br /&gt;
** Nose&lt;br /&gt;
** Left Ear&lt;br /&gt;
** Right Ear&lt;br /&gt;
** Mouth&lt;br /&gt;
** Chin&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeRight&#039;&#039;&#039;&lt;br /&gt;
** Right Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceJaw&#039;&#039;&#039;&lt;br /&gt;
** Jaw&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEarRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Ear&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltLeft&#039;&#039;&#039;&lt;br /&gt;
** Alt Left Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;&amp;gt;The alternative eye bones do not have saccades like the default eyes. They remain still unless animated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceEyeAltRight&#039;&#039;&#039;&lt;br /&gt;
** Alt Right Eye&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;alteye&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: FaceTongueTip&#039;&#039;&#039;&lt;br /&gt;
** Tongue&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Neck&#039;&#039;&#039;&lt;br /&gt;
** Neck&lt;br /&gt;
* &#039;&#039;&#039;Bone: Chest&#039;&#039;&#039;&lt;br /&gt;
** Spine&lt;br /&gt;
** Chest&lt;br /&gt;
* &#039;&#039;&#039;Bone: Torso&#039;&#039;&#039;&lt;br /&gt;
** Left Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;&amp;gt;The &amp;quot;pec&amp;quot; attachment slots are unfortunately named, as they attach to the central bone of the avatar&#039;s torso, and the pectoral muscles are associated with the upper or chest bone. Worse still, in LSL the misnamed the original constants (which was later fixed by adding new constants).&amp;lt;/ref &amp;gt;&lt;br /&gt;
** Right Pec&amp;lt;ref name=&amp;quot;pec&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Pelvis&#039;&#039;&#039;&lt;br /&gt;
** Pelvis&lt;br /&gt;
** Stomach&lt;br /&gt;
* &#039;&#039;&#039;Bone: Groin&#039;&#039;&#039;&lt;br /&gt;
** Groin&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderLeft&#039;&#039;&#039;&lt;br /&gt;
** L Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowLeft&#039;&#039;&#039;&lt;br /&gt;
** L Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Left&#039;&#039;&#039;&lt;br /&gt;
** Left Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;&amp;gt;Added with the Bento Skeleton, December 2015&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarRight&#039;&#039;&#039;&lt;br /&gt;
** Right Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderRight&#039;&#039;&#039;&lt;br /&gt;
** R Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowRight&#039;&#039;&#039;&lt;br /&gt;
** R Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hand&lt;br /&gt;
* &#039;&#039;&#039;Bone: HandRing1Right&#039;&#039;&#039;&lt;br /&gt;
** Right Ring Finger&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hip&lt;br /&gt;
** L Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeLeft&#039;&#039;&#039;&lt;br /&gt;
** L Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Foot&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hip&lt;br /&gt;
** R Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeRight&#039;&#039;&#039;&lt;br /&gt;
** R Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleRight&#039;&#039;&#039;&lt;br /&gt;
** Right Foot&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail1&#039;&#039;&#039;&lt;br /&gt;
** Tail Base&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Tail6&#039;&#039;&#039;&lt;br /&gt;
** Tail Tip&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: Wing4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Wing&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;{{#var:style}}&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Left&#039;&#039;&#039;&lt;br /&gt;
** Left Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Bone: HindLimb4Right&#039;&#039;&#039;&lt;br /&gt;
** Right Hind Foot&amp;lt;ref name=&amp;quot;bento&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Video Tutorial/Wearing attachments]]&lt;br /&gt;
* [[Video Tutorial/Editing attachments]]&lt;br /&gt;
* [[Video Tutorial/Retrieving lost attachments]]&lt;br /&gt;
* [[What are HUD attachments]]&lt;br /&gt;
* [[Video Tutorial/Advanced attachment adjustment]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetTimerEvent&amp;diff=1181966</id>
		<title>LlSetTimerEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetTimerEvent&amp;diff=1181966"/>
		<updated>2013-09-27T22:51:29Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Made the just-added example not stretch beyond the right edge of the screen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=107|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llSetTimerEvent|p1_type=float|p1_name=sec|p1_desc=Any positive non-zero value to enable, zero (0.0) to disable.&lt;br /&gt;
|func_desc=Cause the [[timer]] event to be triggered a maximum of once every &#039;&#039;&#039;sec&#039;&#039;&#039; seconds. Passing in 0.0 stops further timer events.&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
*The time between timer events can be longer, this is caused by:&lt;br /&gt;
** &#039;&#039;&#039;Time dilation&#039;&#039;&#039; -  See [[llGetRegionTimeDilation]] for more information.&lt;br /&gt;
** &#039;&#039;&#039;[[LSL Delay#Events|Default event delay]]&#039;&#039;&#039; - Only so many events can be triggered per second.&lt;br /&gt;
** &#039;&#039;&#039;Event Execution&#039;&#039;&#039; - If the execution of an event takes too long.&lt;br /&gt;
*The timer persists across state changes, but gets removed when the script is reset. So if you change to a state that has a timer() event, with the timer still running, it will fire in the new state.&lt;br /&gt;
*Setting a new timer replaces the old timer, and if called faster than the timer can ever trigger will result in no timer event ever firing.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// default of counter is 0 upon script load&lt;br /&gt;
integer counter;&lt;br /&gt;
float   gap = 2.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(gap);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;The timer stops.&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        ++counter; &lt;br /&gt;
        llSay(0,&lt;br /&gt;
            (string)counter+&amp;quot; ticks have passed in &amp;quot; + (string)llGetTime() &lt;br /&gt;
            + &amp;quot; script seconds.\nEstimated elapsed time: &amp;quot; + (string)(counter * gap));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//  random period in between (+15.0, +30.0]&lt;br /&gt;
//  which means the resulting float could be 30.0 but not 15.0&lt;br /&gt;
 &lt;br /&gt;
    llSetTimerEvent( 30.0 - llFrand(15.0) );&lt;br /&gt;
 &lt;br /&gt;
//  same results for:&lt;br /&gt;
//  llSetTimerEvent( 30.0 + llFrand(-15.0) );&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// The timer event will never fire.&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(5.0);&lt;br /&gt;
        // Sensor every 2.5 seconds&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, FALSE, 0.0, 0.0, 2.5);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    no_sensor()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(5.0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;I will never happen.&amp;quot;);&lt;br /&gt;
        llSay(0, &amp;quot;Well, unless llSensorRepeat() magically finds something,&amp;quot;+&lt;br /&gt;
                    &amp;quot;or maybe there&#039;s 2.5+ seconds of lag and the timer()&amp;quot;+&lt;br /&gt;
                    &amp;quot;event queues.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSensorRepeat]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRegionTimeDilation]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetTime]]|}}&lt;br /&gt;
|also_events={{LSL DefineRow||[[timer]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=*[http://community.secondlife.com/t5/LSL-Scripting/quot-on-mouselook-quot/m-p/768291#M545 Notes on minimum practical llSetTimerEvent values], Second Life forum, 2011-03-21&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=SetTimerEvent&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=Time&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetTimerEvent&amp;diff=1181965</id>
		<title>LlSetTimerEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetTimerEvent&amp;diff=1181965"/>
		<updated>2013-09-27T22:49:58Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Additional llSetTimerEvent() calls reset current timer, added example.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=107|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llSetTimerEvent|p1_type=float|p1_name=sec|p1_desc=Any positive non-zero value to enable, zero (0.0) to disable.&lt;br /&gt;
|func_desc=Cause the [[timer]] event to be triggered a maximum of once every &#039;&#039;&#039;sec&#039;&#039;&#039; seconds. Passing in 0.0 stops further timer events.&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
*The time between timer events can be longer, this is caused by:&lt;br /&gt;
** &#039;&#039;&#039;Time dilation&#039;&#039;&#039; -  See [[llGetRegionTimeDilation]] for more information.&lt;br /&gt;
** &#039;&#039;&#039;[[LSL Delay#Events|Default event delay]]&#039;&#039;&#039; - Only so many events can be triggered per second.&lt;br /&gt;
** &#039;&#039;&#039;Event Execution&#039;&#039;&#039; - If the execution of an event takes too long.&lt;br /&gt;
*The timer persists across state changes, but gets removed when the script is reset. So if you change to a state that has a timer() event, with the timer still running, it will fire in the new state.&lt;br /&gt;
*Setting a new timer replaces the old timer, and if called faster than the timer can ever trigger will result in no timer event ever firing.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// default of counter is 0 upon script load&lt;br /&gt;
integer counter;&lt;br /&gt;
float   gap = 2.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(gap);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;The timer stops.&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        ++counter; &lt;br /&gt;
        llSay(0,&lt;br /&gt;
            (string)counter+&amp;quot; ticks have passed in &amp;quot; + (string)llGetTime() &lt;br /&gt;
            + &amp;quot; script seconds.\nEstimated elapsed time: &amp;quot; + (string)(counter * gap));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//  random period in between (+15.0, +30.0]&lt;br /&gt;
//  which means the resulting float could be 30.0 but not 15.0&lt;br /&gt;
 &lt;br /&gt;
    llSetTimerEvent( 30.0 - llFrand(15.0) );&lt;br /&gt;
 &lt;br /&gt;
//  same results for:&lt;br /&gt;
//  llSetTimerEvent( 30.0 + llFrand(-15.0) );&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// The timer event will never fire.&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(5.0);&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, FALSE, 0.0, 0.0, 2.5); // Sensor every 2.5 seconds&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    no_sensor()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(5.0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;I will never happen.&amp;quot;);&lt;br /&gt;
        llSay(0, &amp;quot;Well, unless llSensorRepeat() magically finds something, or maybe there&#039;s 2.5+ seconds of lag and the timer() event queues.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSensorRepeat]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRegionTimeDilation]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetTime]]|}}&lt;br /&gt;
|also_events={{LSL DefineRow||[[timer]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=*[http://community.secondlife.com/t5/LSL-Scripting/quot-on-mouselook-quot/m-p/768291#M545 Notes on minimum practical llSetTimerEvent values], Second Life forum, 2011-03-21&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=SetTimerEvent&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=Time&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1181813</id>
		<title>Attachment</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Attachment&amp;diff=1181813"/>
		<updated>2013-09-24T16:25:52Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added attachment point list, and their associated bones.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help |Glossary=*}}&lt;br /&gt;
{{Otheruses4‎|attachments|[[LSL]] related information about attachments|:Category:LSL Attachment|opensource specs|Attachment (OS)}}&lt;br /&gt;
&lt;br /&gt;
An attachment is an object (clothing, weapons, jewelry, shoes, etc) that can be attached to an [[avatar]] at a specific location. Usually location is set by the creator of the object. The default location otherwise is the [[ATTACH_RHAND|right hand]].&lt;br /&gt;
&lt;br /&gt;
Attachments are linked to bones. When a bone is animated, all attachment locations linked to that bone will move identically to the bone they are linked to.&lt;br /&gt;
&lt;br /&gt;
The following is a list of attachments and the bones they are attached to.&lt;br /&gt;
* &#039;&#039;&#039;Bone: Head&#039;&#039;&#039;&lt;br /&gt;
** Skull&lt;br /&gt;
** Nose&lt;br /&gt;
** Left Ear&lt;br /&gt;
** Right Ear&lt;br /&gt;
** Mouth&lt;br /&gt;
** Chin&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Eyeball&lt;br /&gt;
* &#039;&#039;&#039;Bone: EyeRight&#039;&#039;&#039;&lt;br /&gt;
** Right Eyeball&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bone: Neck&#039;&#039;&#039;&lt;br /&gt;
** Neck&lt;br /&gt;
* &#039;&#039;&#039;Bone: Chest&#039;&#039;&#039;&lt;br /&gt;
** Spine&lt;br /&gt;
** Chest&lt;br /&gt;
* &#039;&#039;&#039;Bone: Torso&#039;&#039;&#039;&lt;br /&gt;
** Left Pec*&lt;br /&gt;
** Right Pec*&lt;br /&gt;
* &#039;&#039;&#039;Bone: Pelvis&#039;&#039;&#039;&lt;br /&gt;
** Pelvis&lt;br /&gt;
** Stomach&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderLeft&#039;&#039;&#039;&lt;br /&gt;
** L Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowLeft&#039;&#039;&#039;&lt;br /&gt;
** L Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bone: CollarRight&#039;&#039;&#039;&lt;br /&gt;
** Right Shoulder&lt;br /&gt;
* &#039;&#039;&#039;Bone: ShoulderRight&#039;&#039;&#039;&lt;br /&gt;
** R Upper Arm&lt;br /&gt;
* &#039;&#039;&#039;Bone: ElbowRight&#039;&#039;&#039;&lt;br /&gt;
** R Forearm&lt;br /&gt;
* &#039;&#039;&#039;Bone: WristRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Hip&lt;br /&gt;
** L Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeLeft&#039;&#039;&#039;&lt;br /&gt;
** L Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleLeft&#039;&#039;&#039;&lt;br /&gt;
** Left Foot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bone: HipRight&#039;&#039;&#039;&lt;br /&gt;
** Right Hip&lt;br /&gt;
** R Upper Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: KneeRight&#039;&#039;&#039;&lt;br /&gt;
** R Lower Leg&lt;br /&gt;
* &#039;&#039;&#039;Bone: AnkleRight&#039;&#039;&#039;&lt;br /&gt;
** Right Foot&lt;br /&gt;
&lt;br /&gt;
 *The &amp;quot;pec&amp;quot; attachment slots are unfortunately named, as they attach to the&lt;br /&gt;
  central bone of the avatar&#039;s torso, and the pectoral muscles are associated&lt;br /&gt;
  with the upper or chest bone.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Video Tutorial/Wearing attachments]]&lt;br /&gt;
* [[Video Tutorial/Editing attachments]]&lt;br /&gt;
* [[Video Tutorial/Retrieving lost attachments]]&lt;br /&gt;
* [[What are HUD attachments]]&lt;br /&gt;
* [[Video Tutorial/Advanced attachment adjustment]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlGiveInventoryList&amp;diff=1181601</id>
		<title>Talk:LlGiveInventoryList</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlGiveInventoryList&amp;diff=1181601"/>
		<updated>2013-09-13T05:44:08Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Silent limit of 512 items maybe?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Editing ==&lt;br /&gt;
&amp;gt;&amp;gt; #  If inventory cannot be copied then an error is shouted on DEBUG_CHANNEL. &lt;br /&gt;
&lt;br /&gt;
This sucks the big one compared to the elegant, clear, precise English that was in LSL wiki:&lt;br /&gt;
&lt;br /&gt;
llGiveInventoryList can only give items which the object owner has copy permission on. &lt;br /&gt;
&lt;br /&gt;
But one, of course, doesn&#039;t dare change it lest Madame sweep in her broom to set it back to the more obscure and exclusive. [[User:Chaz Longstaff|Chaz Longstaff]] 01:38, 20 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I can see you are upset and I would like to rectify the situation. Is this grudge specific to an edit you made to an LSL Portal article that was reversed? It&#039;s been more than a year since you&#039;ve edited an LSL article. I&#039;ve looked over the last few edits you made to LSL Portal articles and I&#039;m just not finding examples of this. If you could point out more instances of obscure text I will try to expand them into something less obscure. I hope {{User|Cerise Sorbet}}&#039;s edit made this instance more clear. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 15:48, 20 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Sample ==&lt;br /&gt;
&lt;br /&gt;
Considering there were several edits of the sample script, what should the sample script be?  Should we have multiple?  The current script gives away it&#039;s contents.  It used to say it was an unpacker in it&#039;s description, but I corrected that.  If we want an unpacker, then the sample should be different (and check to make sure the toucher is the owner).  If we want a script that checks the flags to ensure they are the correct permission, that seems like a good sample for [[llGetInventoryPermMask]].  [[User:Kunnis Basiat|Kunnis Basiat]] 15:43, 24 December 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
Issue Link At Bottom Leads To &lt;br /&gt;
&lt;br /&gt;
llGetInventoryKey returns NULL_KEY when referencing a notecard that&#039;s empty&lt;br /&gt;
&lt;br /&gt;
[[User:Adicted Waco|Adi]] 16:59, 20 April 2009 (UTC)   Forgot To Sign&lt;br /&gt;
&lt;br /&gt;
Template Was Wrong, 868 Template Lead To 4050&lt;br /&gt;
And Yay I Learned About Templates Today&lt;br /&gt;
[[User:Adicted Waco|Adi]] 17:12, 20 April 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sorry about that, when creating those I just copy and paste from one of the others... and I guess I forget. I&#039;ve been meaning to make it auto-detect the issue handle so it doesn&#039;t have to be inserted (also thinking about doing this with the LSL Constants template, where I sometimes make the same mistake). -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 13:31, 21 April 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Group deeded objects cannot use this function, the error &amp;quot;Group owned objects cannot give inventory.&amp;quot; is shouted on DEBUG_CHANNEL&amp;quot; This does not seem to be correct. Testing, a deeded object happily hands out inventory lists to avatars (whether they are in the group or not). [[User:Tali Rosca|Tali Rosca]] 20:36, 5 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
There seems to be a limit to items that can be given. I&#039;m going to guess it&#039;s 512 items. Try to llGiveInventoryList greater than this limit of several hundred items and it results in silent failure. If someone wants to find the exact count that would be useful to add to the documentation. [[User:Stickman Ingmann|Stickman]] 22:44, 12 September 2013 (PDT)&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlSetKeyframedMotion&amp;diff=1179304</id>
		<title>Talk:LlSetKeyframedMotion</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlSetKeyframedMotion&amp;diff=1179304"/>
		<updated>2013-06-18T17:44:47Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Explanation of how to &amp;quot;animate&amp;quot; a keyframed object.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Animation Types ==&lt;br /&gt;
Instead of setting integer Loop, let&#039;s reuse animation flags that was built for llSetTextureAnim function as list to combine flags usage.&amp;lt;br&amp;gt;&lt;br /&gt;
[[LOOP]] [[REVERSE]] [[PING_PONG]] [[SMOOTH]] [[ROTATE]] [[SCALE]] and maybe add another flag &amp;lt;u&amp;gt;POSITION&amp;lt;/u&amp;gt;(0x80)?&lt;br /&gt;
----&lt;br /&gt;
;[[LOOP]]&lt;br /&gt;
: Starts from the beginning to the end and returns back to the beginning to start again.&lt;br /&gt;
&lt;br /&gt;
;[[REVERSE]]&lt;br /&gt;
: Played backward in following order of the list.&lt;br /&gt;
&lt;br /&gt;
;[[PING_PONG]]&lt;br /&gt;
: Starts from the beginning to the end and play backward back to the beginning to start again.&lt;br /&gt;
&lt;br /&gt;
;[[SMOOTH]]&lt;br /&gt;
: Could be used as another suggestion between sliding to the next target instead of &amp;quot;llSetPos&amp;quot;-like frames.&lt;br /&gt;
&lt;br /&gt;
;[[ROTATE]], [[SCALE]], and &amp;lt;u&amp;gt;POSITION&amp;lt;/u&amp;gt;&lt;br /&gt;
: Allow user to trim list down a bit without the needs to add all three at the same time. (Might be a wishful thinking though.)&lt;br /&gt;
----&lt;br /&gt;
Generally allow users to develop system that could have more than one LlSetKeyframedAnimation function call, long as it&#039;s not using same axis/scale/position again, which overrides the first of that same flag.  One function call use position and second function call use rotation and scale for a type of event call.&lt;br /&gt;
&lt;br /&gt;
I must point out a discussion about stopping, how do to about it. At the moment, suggesting use &amp;lt;u&amp;gt;STOP&amp;lt;/u&amp;gt;(0x00) with combination of any flag from above? --[[Image:Nacon-tag.jpg]] &#039;&#039;&#039;[[User:Vincent_Nacon|₪]]&#039;&#039;&#039; 03:07, 31 August 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
:These are great suggestions. I&#039;d make a few tweaks, though:&lt;br /&gt;
:*Only [[LOOP]], [[PING_PONG]], and maybe [[REVERSE]] make sense here ([[SMOOTH]] is implicit in the way keyframing works--it is always a smooth interpolation)&lt;br /&gt;
:*[[ROTATE]] and &amp;lt;u&amp;gt;TRANSLATE&amp;lt;/u&amp;gt; make sense and are a good way to reduce the size of the lists required. However, it would not be feasible to support multiple merging the keyframe sets from different calls (e.g.,  one call with [[ROTATE]] and one with &amp;lt;u&amp;gt;TRANSLATE&amp;lt;/u&amp;gt;)&lt;br /&gt;
:*[[SCALE]] is not possibly to implement for physical objects in a way that ensures satisfactory performance. Modifying the scale of a physics shape requires (in simplified terms): (1) rebuilding the shape from scratch, (2) removing the object from the world, (3) applying the new shape to the object, and (4) adding the object back into the world. #1, 2, and 4 are all expensive operations.&lt;br /&gt;
:To stop the animation, you could simply pass in an empty list of keyframes.&lt;br /&gt;
:[[User:Falcon Linden|Falcon Linden]] 19:11, 6 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
::As to how to supply these to the function, how about &amp;lt;code&amp;gt;[..., ANIM_FLAGS, integer flags, ...]&amp;lt;/code&amp;gt;. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 11:01, 8 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
:::About SMOOTH, I simply meant when it&#039;s not flagged to have SMOOTH, it would just skip straight to the next frame, no animating between the two frames.&lt;br /&gt;
&lt;br /&gt;
:::As for ROTATE and POSITION(TRANSLATE), treat them separately instead of merging them as one. Which also would cut down the list further when you don&#039;t have to have a data at fixed &amp;quot;frame&amp;quot; from where they should perform.&lt;br /&gt;
&lt;br /&gt;
:::I knew SCALE was a wishful thinking...  Maybe only applied to phantom/attachment/hud prims, where physic doesn&#039;t apply?  People are gonna want something like this for visual display. --[[Image:Nacon-tag.jpg]] &#039;&#039;&#039;[[User:Vincent_Nacon|₪]]&#039;&#039;&#039; 09:35, 26 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Interpolation ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve got a couple ideas for interpolation:&lt;br /&gt;
# Separate flags for configuring interpolation mode for position and orientation parameters. Defaults being LERP and SLERP respectively. Also some flags that provide smoother acceleration.&lt;br /&gt;
# Allow the user to instead of supplying a vector or a rotation parameter in the list to supply a float, which should be in the range [0, 1] indicating a proportional interpolated position/orientation between previous and future frames. aka B-Frames&lt;br /&gt;
#* So [&amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, 0.0, 0.25, 0.0, 0.5, &amp;lt;4,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, 1.0]&lt;br /&gt;
#** So by 0.5 seconds, the position is only &amp;lt;1,0,0&amp;gt; not, &amp;lt;2,0,0&amp;gt; and by 0.75 seconds it would be at &amp;lt;3,0,0&amp;gt;.&lt;br /&gt;
#* There is no real reason to restrict the user to the [0, 1] range, and the user may want to overshoot the end so they can mimic oscillating about the end point before reaching it (and having to calculate out the frames).&lt;br /&gt;
-- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 11:01, 8 September 2011 (PDT)&lt;br /&gt;
:Hey Strife,&lt;br /&gt;
:Your suggestion has some merit, but also comes with a few major drawbacks:&lt;br /&gt;
:#It makes the list more confusing to understand (and more error-prone to process)&lt;br /&gt;
:#It significantly complicates interpretation and processing of the keyframes (which, right can, can be almost directly passed to Havok for application to the physics body)&lt;br /&gt;
:#It&#039;s just plain harder to implement. This is important because, most likely, if this method comes to fruition, it will be implemented exclusively by yours truly and exclusively in my free time (aka when I&#039;m not working on something else at LL and/or on weekends/evenings.) Since I&#039;m only willing to give up so much of my free time to developing these features, we need to keep them as simple as possible. :)&lt;br /&gt;
:Also, it&#039;s worth pointing out that accelerations will always be infinite or zero. That is, the object will always have constant linear and angular velocity and it will switch to new linear/angular velocities in a single simulation frame (aka infinite acceleration). Doing it any other way would remove all benefit from using Havok&#039;s keyframing system and would be equivalent to implementing a full-blown object animation system (which is not currently feasible). Surprisingly, I discovered that for reasonable velocities, these limitations don&#039;t have any noticeable visual artifacts.&lt;br /&gt;
:All that said, it is possible that such a feature could be added in the future given the flexibility of the options list parameter.&lt;br /&gt;
:[[User:Falcon Linden|Falcon Linden]] 18:51, 8 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
::No sweat really, it can be done by preprocessing the list in user code. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 19:19, 8 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
:::You may want to take a look at {{JiraIssue|SCR-373}}; bezier curves are by far my favourite method for creating custom smoothed motion between two keyframes, and could significantly reduce the number of keyframes required by more complex animations. I&#039;ve been using them for some time now in CSS3 and it&#039;s just so much easier to manage, and actually really easy to implement. &amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 04:56, 22 July 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
== KFA_DATA ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m thinking that if KFA_DATA is required, than it shouldn&#039;t be part of the options but a function parameter. Does it need to be explicit? It could be inferred from the types in the list but that limits future syntax changes. On the flip side having it in the options simplifies serialization as you can then store them in the same list as opposed to a separate variable that must be (de)serialized along with the lists.&lt;br /&gt;
&lt;br /&gt;
-- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 11:14, 16 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
== some thoughts ==&lt;br /&gt;
&lt;br /&gt;
just heard about this, sounds really nice, a few thoughts came up when it got mention on the forums...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Animation&amp;quot; seems kinda misleading to what it does as when on think 3d they tend to think of animation more like changing the relation of multiple parts, I suggested &amp;quot;Motion&amp;quot;, Kaluura suggested &amp;quot;Target&amp;quot;. mostly minor either way as long as it does what&#039;s expected of it.&lt;br /&gt;
&lt;br /&gt;
Kalurra mentioned a callback, although I suppose the &amp;quot;Target&amp;quot; functions could work for that, they are all global, which both limits the use of the function and forces extra calculations to get the global frame.&lt;br /&gt;
&lt;br /&gt;
and finally a minor tweak, allowing blank list items to be cast as the appropriate &amp;quot;zero&amp;quot;, so that the list is more collapsible for items that don&#039;t change during a frame... that would allow the structure to be retained, but be less overhead for the script (I think).&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Void_Singer|Void]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Void_Singer|talk]]|[[Special:Contributions/Void_Singer|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 23:30, 17 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
== llSetPrimitiveAnimation() ==&lt;br /&gt;
&lt;br /&gt;
Just heard about this via {{jira|SCR-203}}, and wanted to point to an older issue of mine in the form of {{jira|SVC-347}}, in case it has anything that needs considering, though this function proposal seems like it may be a better format overall.&lt;br /&gt;
&lt;br /&gt;
I wanted to add that with regards to the timing restriction (no translations faster than 0.1 seconds), surely this restriction could be relaxed if the effect were somehow designated as client-side only, since client-side animation is the more desirable case for a lot of applications that would otherwise be very wasteful if done on the simulator-side. In particular, a lot of current animating objects such as prim NPC&#039;s could be replaced with a suitable prim-animation feature, however there wouldn&#039;t be much point if the simulator-side is still a bottleneck for lag, as even without the script-delay issue any network lag could still mess up effects. Related to this is the consideration of synchronising time features, both for simulator-side and client-side effects, as per {{Jira|SCR-13}} and {{Jira|SVC-4897}}, as this could give us a better idea of what state the animation will be in at a particular moment.&lt;br /&gt;
&lt;br /&gt;
Lastly, one other useful addition may be a PAUSE command that can set the object to a specific keyframe, or a LOOP_UNTIL or some such command; since a script cannot guarantee the state of the animation since 5 seconds of animation and 5 seconds of script wait or timer-delay may not always coincide as closely as expected.&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 12:06, 20 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
:In particular, what I&#039;d like to see is the use of LOOP, PING_PONG etc. within the key-frames list. As these are integer constants it should be perfectly safe to do as the keyframes themselves are vectors and/or rotations and floats. In this way, if an integer is encountered, then it will simply set a new state for the rest of the animation. This could potentially be done using a bit-filed like so:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetKeyframedAnimation(&lt;br /&gt;
    [&lt;br /&gt;
        COMMAND, PLAY, // Start the animation&lt;br /&gt;
        FLAGS, SMOOTH | EASE_IN, // Set flags for all following key-frames to use smooth interpolation, and &amp;quot;ease-in&amp;quot; (decelerating movement)&lt;br /&gt;
        LOOP, 3, // All following key-frames will loop a total of 3 times&lt;br /&gt;
            &amp;lt;0, 0, 10&amp;gt;, ZERO_ROTATION, 5.0, // Move up 10m in 5 seconds&lt;br /&gt;
            &amp;lt;0, 0, -10&amp;gt;, ZERO_ROTATION, 5.0, // Move down 10m in 5 seconds&lt;br /&gt;
        PING_PONG, 2, // End of previous loop, all following key-frames will ping-pong a total of 2 times (frames will play forward, then play back, then stop)&lt;br /&gt;
            &amp;lt;5, 0, 0&amp;gt;, ZERO_ROTATION, 1.0, // Move right 5m in 1 second&lt;br /&gt;
            &amp;lt;-5, 0, 0&amp;gt; ZERO_ROTATION, 1.0, // Move left 5m in 1 second&lt;br /&gt;
    ],&lt;br /&gt;
    TRUE // Animation is performed client-side only&lt;br /&gt;
);&lt;br /&gt;
llSleep(60.0);&lt;br /&gt;
llSetKeyframedAnimation([COMMAND, PLAY], TRUE); // Play the animation again client-side&amp;lt;/lsl&amp;gt;&lt;br /&gt;
:Either that, or a key-frame constant can be used, with two choices, so that one constant may be used to specify a short-hand keyframe (vector only or rotation only) or a full keyframe.&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 12:20, 20 September 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
== TRANSLATE: Regions or Local? ==&lt;br /&gt;
Starting to realize that we also might need an integer to set this Local or not. Any thoughts? --[[Image:Nacon-tag.jpg]] &#039;&#039;&#039;[[User:Vincent_Nacon|₪]]&#039;&#039;&#039; 13:18, 4 November 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
:The problem is what happens when you add in KFM_ROTATION? Unless you have sat down and solved the equations for the movement, you won&#039;t know where your prim will end up. What you really want is the movement to be local to some starting rotation, not a continuously changing rotation. For the sake of everyones sanity (especially the implementors) there should be a &amp;lt;code&amp;gt;[KFM_SHIFT_ROT, rotation rot]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[KFM_SHIFT_POS, vector pos]&amp;lt;/code&amp;gt; flags to allow the user to shift the entire animation, otherwise you have to translate ever single frame in the list if you want to tweak it... not fun. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 16:58, 5 November 2011 (PDT)&lt;br /&gt;
:: &amp;lt;span style=&amp;quot;text-decoration:line-through;&amp;quot;&amp;gt; Yes, it&#039;s not easy but I would personally would want that option.  KFM_SHIFT_POS and KFM_SHIFT_ROT sounds like a great idea than adding a integer. &amp;lt;/span&amp;gt; --[[Image:Nacon-tag.jpg]] &#039;&#039;&#039;[[User:Vincent_Nacon|₪]]&#039;&#039;&#039; 12:47, 8 November 2011 (PST)&lt;br /&gt;
:::I like this idea. Please file a jira feature request and mention this post so it can be assigned to me. I will try to implement it when I have time, but no promises on when that might be. I wonder, though: perhaps a more general method &amp;lt;code&amp;gt;list llTransformList(list pointsAndRotations, vector translation, rotation rot)&amp;lt;/code&amp;gt; would be more widely useful at the cost of some script memory?[[User:Falcon Linden|Falcon Linden]] 12:01, 22 November 2011 (PST)&lt;br /&gt;
Ok, I was slightly misunderstanding the Shift suggestion and came to realize that it isn&#039;t going to solve most problems for those who wanted absolute coordinates.  I honestly wouldn&#039;t want shifting the set around by local coordinates, could make LSL writing more complex as it is when making correction due to prim drifting in 45 FPS over time. --[[Image:Nacon-tag.jpg]] &#039;&#039;&#039;[[User:Vincent_Nacon|₪]]&#039;&#039;&#039; 13:27, 22 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
:I must apologize, I have been unable to get in-world to do my own testing. So my knowledge is derived from the documentation and stale first hand experience from over several years of SL experience. After watching [http://www.youtube.com/watch?v=tkD_kf-qouw Moving Platforms, Carousels (llSetKeyframedMotion)] I now have a better understanding of how the function is implemented. I realize now my previous suggestion was not well informed.&lt;br /&gt;
&lt;br /&gt;
:I wonder why I didn&#039;t see this earlier, by describing the frames as changes in position/rotation over time, drift is inevitable. The problem is that the vectors &amp;amp; rotations are made of floats, the components of positions look like floats but they lack the precision (even if they didn&#039;t there are rounding issues with float math). So the translation from change in position to global position results in the rounding to a valid position. Since everything is local to the previous frame, it compounds.&lt;br /&gt;
&lt;br /&gt;
:There are three ways to implement this:&lt;br /&gt;
:# Simulator global coordinators&lt;br /&gt;
:#* Drift is limited to rounding the positions to valid positions, a frame may drift but it won&#039;t compound&lt;br /&gt;
:#* Requires the script to recalibrate the animation when the object is rezzed or risk flying off very quickly.&lt;br /&gt;
:#* llTransformMotionList gets used during every call.&lt;br /&gt;
:# Describe frames as changes from the previous frame.&lt;br /&gt;
:#* Drift compounds.&lt;br /&gt;
:# Coordinates local to starting position. (as changes from the starting position)&lt;br /&gt;
:#* Drift is limited to rounding the positions to valid positions, a frame may drift but it won&#039;t compound&lt;br /&gt;
:#* No recalibration needed when rezzing&lt;br /&gt;
:#* llTransformMotionList is really only needed to full on edit the animation, not during regular use.&lt;br /&gt;
&lt;br /&gt;
: Implementation 3 gives an added bonus: If you decided to write an editor/script that translates Implementation 2 animations into Implementation 3 animations, you can see the drift and correct it.&lt;br /&gt;
&lt;br /&gt;
: I hate to say this but rotation drift is going to be a bigger issue than position drift. Quaternion multiplication is not pretty. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 22:43, 26 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
== Playback speed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[KFM_SPEED, float speed]&amp;lt;/code&amp;gt; default value for &#039;&#039;speed&#039;&#039; is 1.0, this way you can slow down or speed up the animation. Not sure if this should instead or as well be a feature of llTransformMotionList. Easy to implement, just multiply speed by frame duration. Pretty sure negative speed should not be allowed. Negative speed either means reversing the change in position vectors or playing the animation in reverse, and I don&#039;t know which. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 22:43, 26 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
s are described by values that are in a set.  &lt;br /&gt;
&lt;br /&gt;
== Queuing frames on the fly ==  &lt;br /&gt;
&lt;br /&gt;
Lets say you were using this for a train, and you want to be able to flip switches to change which track the train goes down. When you flip the switch you need to update the keyframed motion without stopping the train. What you really want to do is dynamically add frames onto the end of the animation so that when you get close to a switch ([[llTarget]]?) you read the switch and add on the extra frames. This usage could be added with a new flag KFM_CMD_QUEUE. Queuing would imply that old frames that have been processed would be discarded at some point, it would be a memory leak otherwise. With queuing you can really only do KFM_FORWARD or KFM_REVERSE, it&#039;s too complicated to do either kind of looping. For queuing you really need [[LSL Constants/ReturnStatus|success value]] to be returned by the function. Maybe it should be a separate function: &amp;lt;code&amp;gt;integer llQueueKeyframedMotion(...)&amp;lt;/code&amp;gt;. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 22:43, 26 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
== external linking? ==&lt;br /&gt;
&lt;br /&gt;
seems like a bad idea to link to forums threads which are historically unstable in their address... shouldn&#039;t we just quote the source and leave it at that?&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Void_Singer|Void]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Void_Singer|talk]]|[[Special:Contributions/Void_Singer|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 20:20, 18 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
:Is the new forum that hard to link into? -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 20:52, 19 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
not hard per say, but not exactly stable either. Previous links to the official forums have been broken (as well as much of their script related content), and even in the current software, pathing of links is tied to forum and section names (which have changed majorly at least twice in this software) rather than post ID. my concern is that the information it&#039;s supposed to point to will get lost along the way, and in this case, is already duplicated (except for the source, Falcon), which seems to be the point of the link&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Void_Singer|Void]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Void_Singer|talk]]|[[Special:Contributions/Void_Singer|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 21:53, 22 November 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
== Normalized rotation ==&lt;br /&gt;
&lt;br /&gt;
I just noticed the optimization and helpful comment that Strife added to my note regarding normalized rotations on the Rotation page elsewhere in the wiki.  This is one of the cases that I had in mind as I wrote that little section.  In trying to resolve a question about KFM in the LSL Forum, I discovered that &#039;&#039;&#039;&#039;&#039;llSetKeyframedMotion&#039;&#039;&#039;&#039;&#039; sometimes spits out an inscrutable run-time error message unless you feed it normalized rotations.  The example here is one such case.  Thanks to Strife.  I replaced my original user-defined function with the more compact version that he substituted on the Rotations page. [[User:Rolig Loon|Rolig Loon]] 13:34, 12 February 2012 (PST)&lt;br /&gt;
&lt;br /&gt;
:You&#039;re welcome :) I&#039;ve been watching this unfold, sounds annoying. Please keep us up to date on changes to this. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 21:45, 12 February 2012 (PST)&lt;br /&gt;
&lt;br /&gt;
:P.S. Once upon a time I put in a feature request for Quaternion-Float multiplication &amp;amp; division operators but it got shelved because it might break existing code (and before that I requested more functions for working with quaternions but that request may be lost to the sands of time... or in the script forum archive, not sure which).&lt;br /&gt;
&lt;br /&gt;
Is this quaternion normalizing related to the Key Framed Motion only or what? I never, NEVER had a runtime error with a quaternion not being normalized with the Key Framed Motion or any other LSL function. [[User:Dora Gustafson|Dora Gustafson]] 10:45, 23 February 2012 (PST)&lt;br /&gt;
&lt;br /&gt;
The example that includes quaternion normalizing will discourage any newcomer and many other good people including myself, because it takes focus away from the subject of the article. If included it should be said under caveats or bugs in my opinion. [[User:Dora Gustafson|Dora Gustafson]] 10:45, 23 February 2012 (PST)&lt;br /&gt;
&lt;br /&gt;
:Normalization should only be necessary for math or functions that might return non-normalized ones. so far as I can see, that&#039;s direct manipulation of elements, or the functions llAxis2Rot and llRotBetween. all other LSL functions will always return normalized rotations, and math (* or /) on normalized rotations results in normalized rotations. The caveat here should probably only state that it needs normalized rotations, and there should be a caveat on each of the functions or operations that might not return them. The first example shouldn&#039;t need normalization since both sources are already normalized.&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Void_Singer|Void]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Void_Singer|talk]]|[[Special:Contributions/Void_Singer|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 14:33, 26 February 2012 (PST)&lt;br /&gt;
&lt;br /&gt;
:I, too, am not fond of the way it&#039;s sort of alluded that LSL may randomly and uncontrollably wreck rotations, and that everybody should just start using the &amp;quot;magical normalization function&amp;quot; on all rotations. The &amp;quot;some circumstances&amp;quot; should be spelled out clearly. There is the llAxes2Rot on non-orthogonal vectors or the llRotBetween between different magnitudes, but I suspect the primary reason people report seeing it comparatively often is because they read the quaternions from a text representation (such as a notecard), where the components can be rounded off.&amp;lt;br/&amp;gt;[[User:Tali Rosca|Tali Rosca]] 19:12, 9 May 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
::That is likely the case and they haven&#039;t used my [[Float2Hex#Helper_Functions|Rot2Hex]] function to perfectly serialize the rotation! Sorry for the shameless plug but serialization is important. -- &#039;&#039;&#039;[[User:Strife_Onizuka|Strife]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 22:43, 9 May 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
the function provides a list of displacements in region coordinates rather than positions [[User:Sigma Avro|Sigma Avro]] 13:39, 5 April 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Client-Side Motion? ==&lt;br /&gt;
&lt;br /&gt;
I think that this function would be particularly useful if it could be used to define client-side motion, as many animations won&#039;t necessarily require the object to actually move. This could easily be achieved with a suitable option to make the effect client-side as opposed to server-side only, in which case the object wouldn&#039;t physically move, only visually. If it is done, then I&#039;d like to pitch {{jira|SVC-4897}} since it would allow the animation (and potentially loads of other effects) to work better on the viewer side; eliminating the need for messy scripted synchronisation, and avoiding lag-related issues.&amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 09:18, 11 May 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
:I just wanted to add as well that client-side motion is also particularly important as it would allow the function to be applied to objects that do no use prim-equivalency; since the effect would be client-side only it would not be as demanding, and the viewer can easily reduce the detail of the animation if necessary. I just wanted to ask as well what exactly the state of this is; the function is not recognised by the viewer&#039;s LSL editor, though it does compile, at least in LeTigre regions (which my home region belongs to) so I&#039;m curious if it&#039;s live yet? If it is a live change then I&#039;ll have to look at filing a JIRA issue for client-side integration. &amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 03:43, 12 May 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
::I wanted to note that I added a proposal under {{JiraIssue|SCR-346}} to retroactively add this ability; animation is fine, but the fact is that nearly all things I&#039;d like to use it for could be handled a lot more efficiently within the viewer as I don&#039;t really have any need for the objects to physically go anywhere. As noted in the proposal the advantage of the client-side option is that it eliminates all work from the simulator, leaving each viewer to decide how frequently to update the animation. It would also allow animation of non equivalency prims, and child-prims. In the proposal for child-prims I noted that these would occur locally; i.e - everything is relative to the root. This would allow simple environmental animation without generating huge load; things such as moving pistons, and such. &amp;lt;br/&amp;gt;-- &#039;&#039;&#039;[[User:Haravikk_Mistral|Haravikk]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User_talk:Haravikk_Mistral|talk]]|[[Special:Contributions/Haravikk_Mistral|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt; 05:04, 22 July 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
== MINIMAL TIME ==&lt;br /&gt;
&lt;br /&gt;
Script warming errors indicate that minimal value for time is to be &amp;gt; 0.1 seconds.&lt;br /&gt;
Not clear what &amp;gt;0.1s means exactly since according to test the minimal value is 0.112 in an empty sim with zero lag.[[User:Sigma Avro|Sigma Avro]] 12:50, 12 August 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
Not sure where it becomes 5/45 in the programming, but it was likely originally written as 0.1 and becomes 5/45 due to per-frame rounding. Either that or it was written and always had been 5 frames, and someone thought it was simpler to make the error say &#039;0.1&#039;.   [[User:Acheron Gloom|Acheron Gloom]] 14:11, 12 August 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Moving linkset while animating ==&lt;br /&gt;
Attempting to modify the any prims of a linkset while it&#039;s playing a keyframed motion will result in the following error:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cannot use a script to move a linkset while it is playing an animation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I was surprised had not only not been documented, but had no workaround mentioned. In my examination, this function can potentially be used as a sort of &amp;quot;pathfinding lite,&amp;quot; or a replacement when dynamic pathfinding is unavailable. As such, it would inevitably used for some critter that needs to play some sort of prim-based animation while sliding along. I&#039;ve updated the main page with my findings and solutions, but I wanted to mention them in more detail here.&lt;br /&gt;
&lt;br /&gt;
First, the keyframed motion can be paused by calling:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_PAUSE])&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Easy peasy. This also works in a second script, if for some reason you can&#039;t call it from the original script. Keyframed motion is like particles and hovertext in that it&#039;s a prim property, and any script can modify the prim properties without knowing what other scripts are up to. The empty keyframes list doesn&#039;t actually clear the keyframes stored.&lt;br /&gt;
&lt;br /&gt;
Restarting the keyframed motion is done with this command:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_PLAY])&amp;lt;/lsl&amp;gt;&lt;br /&gt;
But be careful! If you&#039;ve previous called the function with two blank lists to &amp;quot;stop&amp;quot; the motion entirely, this will restart it. It looks like two blank lists is merely a shortcut to pausing, not a termination and clearing of the keyframe list.&lt;br /&gt;
&lt;br /&gt;
Second, for the actual &amp;quot;animating&amp;quot; of your critter. You&#039;ll want to use [[llSetLinkPrimitiveParamsFast]]. Since your goal should be not to interrupt the smooth movement (unless it&#039;s not your goal) you should lump all of your prim shifting into one call using [[PRIM_LINK_TARGET]], making one list with all your property changes for all prims. Once the list is compiled, pause the motion, call the llSLPPF function, and restart the motion. In my testing, if this all manages to happen in one frame, the motion will not even be interrupted and remain smooth.&lt;br /&gt;
&lt;br /&gt;
Hopefully this helps someone else who was in a similar spot as me, and found themselves encountering an unexpected error. --[[User:Stickman Ingmann|Stickman]] 10:44, 18 June 2013 (PDT)&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1179303</id>
		<title>LlSetKeyframedMotion</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1179303"/>
		<updated>2013-06-18T17:26:21Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: improved formatting of previous edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{Issues/SCR-345}}{{Issues/SCR-346}}{{Issues/SVC-7796}}{{Issues/SCR-373}}&lt;br /&gt;
|func=llSetKeyframedMotion&lt;br /&gt;
|func_id=?&lt;br /&gt;
|func_desc=Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between keyframes by the simulator. Collisions with other nonphysical or keyframed objects will be ignored (no script events will fire and collision processing will not occur). Collisions with physical objects will be computed and reported, but the keyframed object will be unaffected by those collisions. (The physical object will be affected, however.) &lt;br /&gt;
|func_sleep&lt;br /&gt;
|func_energy&lt;br /&gt;
|func_footnote&lt;br /&gt;
|p1_type=list|p1_name=keyframes|p1_hover=Strided keyframe list of the form: [vector position, rotation orientation, float time]&lt;br /&gt;
|p1_desc=Strided keyframe list of the form:&lt;br /&gt;
* &#039;&#039;vector&#039;&#039; position (optional via [[KFM_TRANSLATION]] and [[KFM_DATA]])&lt;br /&gt;
* &#039;&#039;rotation&#039;&#039; orientation (optional via [[KFM_ROTATION]] and [[KFM_DATA]])&lt;br /&gt;
* &#039;&#039;float&#039;&#039; time&lt;br /&gt;
&lt;br /&gt;
Each keyframe is interpreted relative to the previous transform of the object. For example, consider the following list of keyframes: [&amp;lt;0, 0, 10&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, 0&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, -10&amp;gt;, [[ZERO_ROTATION]], 5]. This would cause the object to move up 10m over the course of 5s. It would then remain at the location for 5s before moving down 10m over the course of another 5s.&lt;br /&gt;
Time values must be 1/9s. or greater.&lt;br /&gt;
Linear and angular velocities will be clamped to limits set by the simulator (values TBD).&lt;br /&gt;
An empty list will terminate any keyframed animation currently playing. &lt;br /&gt;
|p2_type=list|p2_name=options|p2_desc=modifiers and future options &lt;br /&gt;
|spec=&lt;br /&gt;
The following flags will be supported within the &#039;&#039;options&#039;&#039; list:&lt;br /&gt;
*[[KFM_MODE]] followed by one of: [[KFM_LOOP]], [[KFM_REVERSE]], [[KFM_FORWARD]], or [[KFM_PING_PONG]] will specify the playback mode. Defaults to [[KFM_FORWARD]]. Must be specified when the keyframe list is provided.&lt;br /&gt;
*[[KFM_DATA]] followed by a bitwise combination of: [[KFM_TRANSLATION]] and [[KFM_ROTATION]]. By default both rotations and translations must be provided. If you specify one or the other, you should only include translations or rotations in your keyframe list. Must be specified at the time the keyframe list is provided.&lt;br /&gt;
*[[KFM_COMMAND]] followed by one of: [[KFM_CMD_STOP]], [[KFM_CMD_PLAY]], [[KFM_CMD_PAUSE]]. STOP will pause the animation AND reset it to the beginning. PAUSE will pause the animation without resetting. PLAY will resume a paused or stopped animation. &lt;br /&gt;
Note that if [[KFM_COMMAND]] is provided in the options list, it must be the only option in the list, and cannot be specified in the same function call that sets the keyframes list.&lt;br /&gt;
&lt;br /&gt;
Inter-region movement is supported; simply specify a target keyframe that would place the object outside the sim boundaries and it will cross over. This seems to provide the same effect as pausing the animation when it is in limbo between the two regions, but the viewer continues to interpolate its movement. It will jump back to the sim border and continue on the same speed, although the time between waypoints will be increased due to the sim crossing. Make sure you factor this into your system.&lt;br /&gt;
&lt;br /&gt;
Since keyframed motion is a prim property rather than restricted to the script that called it, you can use multiple scripts to control, pause, or restart the same keyframed motion without passing the original keyframe list provided. Just pass an empty list for keyframes list, and the [[KFM_COMMAND]] followed by the command in the options list.&lt;br /&gt;
|constants={{LSL Constants/KeyframedMotion|set|table=*}}&lt;br /&gt;
|caveats=&lt;br /&gt;
*This function does not work in attachments.&lt;br /&gt;
*This function can only be called on NON-physical objects. In the future it could be extended to support physical objects, but this is more complicated as collisions could prevent the object from reaching its goal positions on time.&lt;br /&gt;
*You cannot use scripts to move any prim in the linkset while the keyframed motion is active. If you must, first pause it with &amp;lt;lsl&amp;gt;llSetKeyframedMotion([],[KFM_COMMAND],[KFM_CMD_PAUSE])&amp;lt;/lsl&amp;gt; and restart it with [[KFM_CMD_PLAY]] when done.&lt;br /&gt;
*Collisions with avatars affect the angular movement of the object and it may not reach the final rotation.&lt;br /&gt;
*This function can only be called on the root prim of a linkset.&lt;br /&gt;
*This function requires the linkset to use the Prim Equivalency system. However, it keyframed objects will not receive the dynamics penalty and can have a physics weight of up to 64.&lt;br /&gt;
*llSetKeyframedMotion is implemented in terms of frames and not real time. To avoid a drift from the expected positions and rotations, use times which are integer multiples of 1/45, e.g. 20.0/45.0, 40.0/45.0, 90.0/45.0, etc. [http://community.secondlife.com/t5/LSL-Scripting/llSetKeyframedMotion-turning-a-corner/td-p/1225219 Forum Thread]&lt;br /&gt;
**Natural drift can still occur; for best results use [[moving_end]] to determine when the animation has ended and confirm the target position with [[llSetPos]].&lt;br /&gt;
*There are a few bugs in the avatar animation system that may cause strange looking animations to play when standing on a moving platform (e.g., walking in place, feet-at-pelvis). We hope to fix these in the future, but doing so is out of scope for this feature.&lt;br /&gt;
*As with dynamic objects, objects moving using this function are paused when they are selected by an avatar with adequate permissions (object owner, passenger, etc). When such an avatar deselects the object, motion resumes, even if the object had been paused using [[KFM_CMD_PAUSE]].&lt;br /&gt;
*A Key Framed Motion is a &#039;&#039;&#039;prim property&#039;&#039;&#039; in some respect. When a KFM_LOOP or [[KFM_PING_PONG]] is initiated not only &#039;&#039;&#039;the motion&#039;&#039;&#039; but also the &#039;&#039;&#039;prim position&#039;&#039;&#039; is &#039;&#039;&#039;preserved after the script is removed&#039;&#039;&#039;. I.E. The prim will continue what motion it had  and it will snap back when moving is attempted. It will not survive take and copy. It will survive server restart.&lt;br /&gt;
*Inter region movement is far from perfect. Crossing from sim 1 to sim 2 using a Key Frame list with numerous frames on a curved path will pick up conspicuous errors on the crossing and when reversed by [ [[KFM_MODE]], [[KFM_REVERSE]] ] the object will stay in sim 2 and never return to sim 1&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// If your client is not mesh-aware use the following line:&lt;br /&gt;
&lt;br /&gt;
llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
    [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llSetKeyframedMotion(&lt;br /&gt;
    [&amp;lt;0.0, 0.0, 10.0&amp;gt;,  5,&lt;br /&gt;
        &amp;lt;0.0, 0.0, -10.0&amp;gt;,  5],&lt;br /&gt;
    [KFM_DATA, KFM_TRANSLATION, KFM_MODE, KFM_PING_PONG]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llSetKeyframedMotion(&lt;br /&gt;
    [&amp;lt;0.0, 0.0, 10.0&amp;gt;, llEuler2Rot(&amp;lt;90, 45, 180&amp;gt; * DEG_TO_RAD), 5,&lt;br /&gt;
        &amp;lt;0.0, 0.0, -10.0&amp;gt;, llEuler2Rot(&amp;lt;270, 225, 360&amp;gt; * DEG_TO_RAD), 5],&lt;br /&gt;
    [KFM_MODE, KFM_REVERSE]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
==Sample Script - Key Framed Follower==&lt;br /&gt;
Under some circumstances, rotations will generate a run-time error unless they are normalized.  This script illustrates a way to use llKeyframedMotion to create a follower -- think, for example, of a cart behind a vehicle -- using normalized target rotation.&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer isSensorRepeatOn;&lt;br /&gt;
&lt;br /&gt;
rotation NormRot(rotation Q)&lt;br /&gt;
{&lt;br /&gt;
    float MagQ = llSqrt(Q.x*Q.x + Q.y*Q.y +Q.z*Q.z + Q.s*Q.s);&lt;br /&gt;
&lt;br /&gt;
    return&lt;br /&gt;
        &amp;lt;Q.x/MagQ, Q.y/MagQ, Q.z/MagQ, Q.s/MagQ&amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(LINK_ROOT,&lt;br /&gt;
                [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX,&lt;br /&gt;
            PRIM_LINK_TARGET, LINK_ALL_CHILDREN,&lt;br /&gt;
                PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_NONE]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        isSensorRepeatOn = !isSensorRepeatOn;&lt;br /&gt;
&lt;br /&gt;
        if (isSensorRepeatOn)&lt;br /&gt;
        {&lt;br /&gt;
        //  PUBLIC_CHANNEL has the integer value 0&lt;br /&gt;
            llSay(PUBLIC_CHANNEL, &amp;quot;Sensor repeat switched on!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;91b39b5b-13b1-2517-273a-67360b842c02&amp;quot;, SCRIPTED, 10.0, PI, 0.1);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
//      {&lt;br /&gt;
            llSensorRemove();&lt;br /&gt;
//      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    sensor(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        vector ownPosition = llGetPos();&lt;br /&gt;
        rotation ownRotation = llGetRot();&lt;br /&gt;
        vector detectedPosition = llDetectedPos(0);&lt;br /&gt;
        rotation detectedRotation = llDetectedRot(0);&lt;br /&gt;
&lt;br /&gt;
        llSetKeyframedMotion(&lt;br /&gt;
            [(detectedPosition - ownPosition) + &amp;lt;-1.0, 0.0, 0.2&amp;gt;*detectedRotation,&lt;br /&gt;
            NormRot(detectedRotation/ownRotation), 0.12],&lt;br /&gt;
            []);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
==Universal Hinged Motion in 8 Key Frames==&lt;br /&gt;
The script will turn a box prim around one edge parallel to the prim&#039;s Y-axis&amp;lt;br&amp;gt;&lt;br /&gt;
The script will work for any prim orientation&amp;lt;br&amp;gt;&lt;br /&gt;
Note that the smallest accepted time per frame is 1/9S=0.11111111S and NOT 0.1S&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
float angleEnd = PI_BY_TWO;&lt;br /&gt;
&lt;br /&gt;
float speedInMetersPerSecond = 0.2;&lt;br /&gt;
&lt;br /&gt;
float numberOfKeyframes = 8.0;&lt;br /&gt;
float step = 0.0;&lt;br /&gt;
&lt;br /&gt;
list listOfKeyframes;&lt;br /&gt;
&lt;br /&gt;
vector V;&lt;br /&gt;
integer open = TRUE;&lt;br /&gt;
&lt;br /&gt;
vector startPosition;&lt;br /&gt;
rotation startRotation;&lt;br /&gt;
 &lt;br /&gt;
float motion_time(float mt)&lt;br /&gt;
{&lt;br /&gt;
    mt = llRound(45.0*mt)/45.0;&lt;br /&gt;
&lt;br /&gt;
    if (0.11111111 &amp;lt; mt)&lt;br /&gt;
        return mt;&lt;br /&gt;
&lt;br /&gt;
//  else&lt;br /&gt;
        return 0.11111111;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit(0x2000);&lt;br /&gt;
&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
            [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);&lt;br /&gt;
&lt;br /&gt;
        vector scale = llGetScale();&lt;br /&gt;
        startPosition = llGetPos();&lt;br /&gt;
        startRotation = llGetRot();&lt;br /&gt;
&lt;br /&gt;
        vector v1 = 0.5*scale*startRotation;&lt;br /&gt;
&lt;br /&gt;
        rotation deltaRot = llEuler2Rot(&amp;lt; 0.0, angleEnd/numberOfKeyframes, 0.0&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
        while (step &amp;lt; numberOfKeyframes)&lt;br /&gt;
        {&lt;br /&gt;
            vector ownRot2Left = llRot2Left(llGetRot());&lt;br /&gt;
&lt;br /&gt;
            V = v1*llAxisAngle2Rot(ownRot2Left, angleEnd*step/numberOfKeyframes);&lt;br /&gt;
            V = v1*llAxisAngle2Rot(ownRot2Left, angleEnd*(step + 1.0)/numberOfKeyframes) - V;&lt;br /&gt;
&lt;br /&gt;
            listOfKeyframes += [V, deltaRot, motion_time(llVecMag(V)/speedInMetersPerSecond)];&lt;br /&gt;
&lt;br /&gt;
            step += 1.0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        llSetKeyframedMotion([], []);&lt;br /&gt;
&lt;br /&gt;
        if (open)&lt;br /&gt;
        {&lt;br /&gt;
            llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
                [PRIM_POSITION, startPosition,&lt;br /&gt;
                PRIM_ROTATION, startRotation]);&lt;br /&gt;
&lt;br /&gt;
            llSetKeyframedMotion(listOfKeyframes, []);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
//      {&lt;br /&gt;
            llSetKeyframedMotion(listOfKeyframes, [KFM_MODE, KFM_REVERSE]);&lt;br /&gt;
//      }&lt;br /&gt;
&lt;br /&gt;
        open = !open;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
After editing prim position, rotation and/or size the script should be reset in order to update the motion&lt;br /&gt;
==More Examples==&lt;br /&gt;
# [https://wiki.secondlife.com/wiki/User:Dora_Gustafson/Pendulum_motion Pendulum motion] Simple Pendulum Motion in 24 Key Frames, a good motion for a swing&lt;br /&gt;
# [https://wiki.secondlife.com/wiki/User:Dora_Gustafson/Harmonic_Oscillator_motion Oscillator motion] Motion in 12 Key Frames&lt;br /&gt;
|notes=&lt;br /&gt;
Potential Use Cases:&lt;br /&gt;
* Elevators&lt;br /&gt;
* Moving platforms&lt;br /&gt;
* Trains/Fixed-Track Vehicles&lt;br /&gt;
* Moving doors/walls/gates&lt;br /&gt;
* Windmills and other machines&lt;br /&gt;
Targeted coordinate systems: The Translation is in Global coordinates, the Rotation in Local coordinates&lt;br /&gt;
* Say: a move on the X-axis will move the object along the global, region X-axis no matter how the object is rotated&lt;br /&gt;
* Say: a rotate around the X-axis will rotate the object around it&#039;s local, prim X-axis no matter the object&#039;s rotation&lt;br /&gt;
* When the object is not rotated in the global system you won&#039;t notice the difference&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Movement&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1179302</id>
		<title>LlSetKeyframedMotion</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1179302"/>
		<updated>2013-06-18T17:23:59Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added limitations and abilities that were not documented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{Issues/SCR-345}}{{Issues/SCR-346}}{{Issues/SVC-7796}}{{Issues/SCR-373}}&lt;br /&gt;
|func=llSetKeyframedMotion&lt;br /&gt;
|func_id=?&lt;br /&gt;
|func_desc=Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between keyframes by the simulator. Collisions with other nonphysical or keyframed objects will be ignored (no script events will fire and collision processing will not occur). Collisions with physical objects will be computed and reported, but the keyframed object will be unaffected by those collisions. (The physical object will be affected, however.) &lt;br /&gt;
|func_sleep&lt;br /&gt;
|func_energy&lt;br /&gt;
|func_footnote&lt;br /&gt;
|p1_type=list|p1_name=keyframes|p1_hover=Strided keyframe list of the form: [vector position, rotation orientation, float time]&lt;br /&gt;
|p1_desc=Strided keyframe list of the form:&lt;br /&gt;
* &#039;&#039;vector&#039;&#039; position (optional via [[KFM_TRANSLATION]] and [[KFM_DATA]])&lt;br /&gt;
* &#039;&#039;rotation&#039;&#039; orientation (optional via [[KFM_ROTATION]] and [[KFM_DATA]])&lt;br /&gt;
* &#039;&#039;float&#039;&#039; time&lt;br /&gt;
&lt;br /&gt;
Each keyframe is interpreted relative to the previous transform of the object. For example, consider the following list of keyframes: [&amp;lt;0, 0, 10&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, 0&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, -10&amp;gt;, [[ZERO_ROTATION]], 5]. This would cause the object to move up 10m over the course of 5s. It would then remain at the location for 5s before moving down 10m over the course of another 5s.&lt;br /&gt;
Time values must be 1/9s. or greater.&lt;br /&gt;
Linear and angular velocities will be clamped to limits set by the simulator (values TBD).&lt;br /&gt;
An empty list will terminate any keyframed animation currently playing. &lt;br /&gt;
|p2_type=list|p2_name=options|p2_desc=modifiers and future options &lt;br /&gt;
|spec=&lt;br /&gt;
The following flags will be supported within the &#039;&#039;options&#039;&#039; list:&lt;br /&gt;
*[[KFM_MODE]] followed by one of: [[KFM_LOOP]], [[KFM_REVERSE]], [[KFM_FORWARD]], or [[KFM_PING_PONG]] will specify the playback mode. Defaults to [[KFM_FORWARD]]. Must be specified when the keyframe list is provided.&lt;br /&gt;
*[[KFM_DATA]] followed by a bitwise combination of: [[KFM_TRANSLATION]] and [[KFM_ROTATION]]. By default both rotations and translations must be provided. If you specify one or the other, you should only include translations or rotations in your keyframe list. Must be specified at the time the keyframe list is provided.&lt;br /&gt;
*[[KFM_COMMAND]] followed by one of: [[KFM_CMD_STOP]], [[KFM_CMD_PLAY]], [[KFM_CMD_PAUSE]]. STOP will pause the animation AND reset it to the beginning. PAUSE will pause the animation without resetting. PLAY will resume a paused or stopped animation. &lt;br /&gt;
Note that if [[KFM_COMMAND]] is provided in the options list, it must be the only option in the list, and cannot be specified in the same function call that sets the keyframes list.&lt;br /&gt;
&lt;br /&gt;
Inter-region movement is supported; simply specify a target keyframe that would place the object outside the sim boundaries and it will cross over. This seems to provide the same effect as pausing the animation when it is in limbo between the two regions, but the viewer continues to interpolate its movement. It will jump back to the sim border and continue on the same speed, although the time between waypoints will be increased due to the sim crossing. Make sure you factor this into your system.&lt;br /&gt;
&lt;br /&gt;
Since keyframed motion is a prim property rather than restricted to the script that called it, you can use multiple scripts to control, pause, or restart the same keyframed motion without passing the original keyframe list provided. Just pass an empty list for keyframes list, and the &#039;&#039;&#039;KFM_COMMAND&#039;&#039;&#039; followed by the command in the options list.&lt;br /&gt;
|constants={{LSL Constants/KeyframedMotion|set|table=*}}&lt;br /&gt;
|caveats=&lt;br /&gt;
*This function does not work in attachments.&lt;br /&gt;
*This function can only be called on NON-physical objects. In the future it could be extended to support physical objects, but this is more complicated as collisions could prevent the object from reaching its goal positions on time.&lt;br /&gt;
*You cannot use scripts to move any prim in the linkset while the keyframed motion is active. If you must, first pause it with &#039;&#039;llSetKeyframedMotion([],[KFM_COMMAND,KFM_CMD_PAUSE])&#039;&#039; and restart it with &#039;&#039;KFM_CMD_PLAY&#039;&#039; when done.&lt;br /&gt;
*Collisions with avatars affect the angular movement of the object and it may not reach the final rotation.&lt;br /&gt;
*This function can only be called on the root prim of a linkset.&lt;br /&gt;
*This function requires the linkset to use the Prim Equivalency system. However, it keyframed objects will not receive the dynamics penalty and can have a physics weight of up to 64.&lt;br /&gt;
*llSetKeyframedMotion is implemented in terms of frames and not real time. To avoid a drift from the expected positions and rotations, use times which are integer multiples of 1/45, e.g. 20.0/45.0, 40.0/45.0, 90.0/45.0, etc. [http://community.secondlife.com/t5/LSL-Scripting/llSetKeyframedMotion-turning-a-corner/td-p/1225219 Forum Thread]&lt;br /&gt;
**Natural drift can still occur; for best results use [[moving_end]] to determine when the animation has ended and confirm the target position with [[llSetPos]].&lt;br /&gt;
*There are a few bugs in the avatar animation system that may cause strange looking animations to play when standing on a moving platform (e.g., walking in place, feet-at-pelvis). We hope to fix these in the future, but doing so is out of scope for this feature.&lt;br /&gt;
*As with dynamic objects, objects moving using this function are paused when they are selected by an avatar with adequate permissions (object owner, passenger, etc). When such an avatar deselects the object, motion resumes, even if the object had been paused using [[KFM_CMD_PAUSE]].&lt;br /&gt;
*A Key Framed Motion is a &#039;&#039;&#039;prim property&#039;&#039;&#039; in some respect. When a KFM_LOOP or [[KFM_PING_PONG]] is initiated not only &#039;&#039;&#039;the motion&#039;&#039;&#039; but also the &#039;&#039;&#039;prim position&#039;&#039;&#039; is &#039;&#039;&#039;preserved after the script is removed&#039;&#039;&#039;. I.E. The prim will continue what motion it had  and it will snap back when moving is attempted. It will not survive take and copy. It will survive server restart.&lt;br /&gt;
*Inter region movement is far from perfect. Crossing from sim 1 to sim 2 using a Key Frame list with numerous frames on a curved path will pick up conspicuous errors on the crossing and when reversed by [ [[KFM_MODE]], [[KFM_REVERSE]] ] the object will stay in sim 2 and never return to sim 1&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// If your client is not mesh-aware use the following line:&lt;br /&gt;
&lt;br /&gt;
llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
    [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llSetKeyframedMotion(&lt;br /&gt;
    [&amp;lt;0.0, 0.0, 10.0&amp;gt;,  5,&lt;br /&gt;
        &amp;lt;0.0, 0.0, -10.0&amp;gt;,  5],&lt;br /&gt;
    [KFM_DATA, KFM_TRANSLATION, KFM_MODE, KFM_PING_PONG]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llSetKeyframedMotion(&lt;br /&gt;
    [&amp;lt;0.0, 0.0, 10.0&amp;gt;, llEuler2Rot(&amp;lt;90, 45, 180&amp;gt; * DEG_TO_RAD), 5,&lt;br /&gt;
        &amp;lt;0.0, 0.0, -10.0&amp;gt;, llEuler2Rot(&amp;lt;270, 225, 360&amp;gt; * DEG_TO_RAD), 5],&lt;br /&gt;
    [KFM_MODE, KFM_REVERSE]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
==Sample Script - Key Framed Follower==&lt;br /&gt;
Under some circumstances, rotations will generate a run-time error unless they are normalized.  This script illustrates a way to use llKeyframedMotion to create a follower -- think, for example, of a cart behind a vehicle -- using normalized target rotation.&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer isSensorRepeatOn;&lt;br /&gt;
&lt;br /&gt;
rotation NormRot(rotation Q)&lt;br /&gt;
{&lt;br /&gt;
    float MagQ = llSqrt(Q.x*Q.x + Q.y*Q.y +Q.z*Q.z + Q.s*Q.s);&lt;br /&gt;
&lt;br /&gt;
    return&lt;br /&gt;
        &amp;lt;Q.x/MagQ, Q.y/MagQ, Q.z/MagQ, Q.s/MagQ&amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(LINK_ROOT,&lt;br /&gt;
                [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX,&lt;br /&gt;
            PRIM_LINK_TARGET, LINK_ALL_CHILDREN,&lt;br /&gt;
                PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_NONE]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        isSensorRepeatOn = !isSensorRepeatOn;&lt;br /&gt;
&lt;br /&gt;
        if (isSensorRepeatOn)&lt;br /&gt;
        {&lt;br /&gt;
        //  PUBLIC_CHANNEL has the integer value 0&lt;br /&gt;
            llSay(PUBLIC_CHANNEL, &amp;quot;Sensor repeat switched on!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;91b39b5b-13b1-2517-273a-67360b842c02&amp;quot;, SCRIPTED, 10.0, PI, 0.1);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
//      {&lt;br /&gt;
            llSensorRemove();&lt;br /&gt;
//      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    sensor(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        vector ownPosition = llGetPos();&lt;br /&gt;
        rotation ownRotation = llGetRot();&lt;br /&gt;
        vector detectedPosition = llDetectedPos(0);&lt;br /&gt;
        rotation detectedRotation = llDetectedRot(0);&lt;br /&gt;
&lt;br /&gt;
        llSetKeyframedMotion(&lt;br /&gt;
            [(detectedPosition - ownPosition) + &amp;lt;-1.0, 0.0, 0.2&amp;gt;*detectedRotation,&lt;br /&gt;
            NormRot(detectedRotation/ownRotation), 0.12],&lt;br /&gt;
            []);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
==Universal Hinged Motion in 8 Key Frames==&lt;br /&gt;
The script will turn a box prim around one edge parallel to the prim&#039;s Y-axis&amp;lt;br&amp;gt;&lt;br /&gt;
The script will work for any prim orientation&amp;lt;br&amp;gt;&lt;br /&gt;
Note that the smallest accepted time per frame is 1/9S=0.11111111S and NOT 0.1S&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
float angleEnd = PI_BY_TWO;&lt;br /&gt;
&lt;br /&gt;
float speedInMetersPerSecond = 0.2;&lt;br /&gt;
&lt;br /&gt;
float numberOfKeyframes = 8.0;&lt;br /&gt;
float step = 0.0;&lt;br /&gt;
&lt;br /&gt;
list listOfKeyframes;&lt;br /&gt;
&lt;br /&gt;
vector V;&lt;br /&gt;
integer open = TRUE;&lt;br /&gt;
&lt;br /&gt;
vector startPosition;&lt;br /&gt;
rotation startRotation;&lt;br /&gt;
 &lt;br /&gt;
float motion_time(float mt)&lt;br /&gt;
{&lt;br /&gt;
    mt = llRound(45.0*mt)/45.0;&lt;br /&gt;
&lt;br /&gt;
    if (0.11111111 &amp;lt; mt)&lt;br /&gt;
        return mt;&lt;br /&gt;
&lt;br /&gt;
//  else&lt;br /&gt;
        return 0.11111111;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit(0x2000);&lt;br /&gt;
&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
            [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);&lt;br /&gt;
&lt;br /&gt;
        vector scale = llGetScale();&lt;br /&gt;
        startPosition = llGetPos();&lt;br /&gt;
        startRotation = llGetRot();&lt;br /&gt;
&lt;br /&gt;
        vector v1 = 0.5*scale*startRotation;&lt;br /&gt;
&lt;br /&gt;
        rotation deltaRot = llEuler2Rot(&amp;lt; 0.0, angleEnd/numberOfKeyframes, 0.0&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
        while (step &amp;lt; numberOfKeyframes)&lt;br /&gt;
        {&lt;br /&gt;
            vector ownRot2Left = llRot2Left(llGetRot());&lt;br /&gt;
&lt;br /&gt;
            V = v1*llAxisAngle2Rot(ownRot2Left, angleEnd*step/numberOfKeyframes);&lt;br /&gt;
            V = v1*llAxisAngle2Rot(ownRot2Left, angleEnd*(step + 1.0)/numberOfKeyframes) - V;&lt;br /&gt;
&lt;br /&gt;
            listOfKeyframes += [V, deltaRot, motion_time(llVecMag(V)/speedInMetersPerSecond)];&lt;br /&gt;
&lt;br /&gt;
            step += 1.0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        llSetKeyframedMotion([], []);&lt;br /&gt;
&lt;br /&gt;
        if (open)&lt;br /&gt;
        {&lt;br /&gt;
            llSetLinkPrimitiveParamsFast(LINK_THIS,&lt;br /&gt;
                [PRIM_POSITION, startPosition,&lt;br /&gt;
                PRIM_ROTATION, startRotation]);&lt;br /&gt;
&lt;br /&gt;
            llSetKeyframedMotion(listOfKeyframes, []);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
//      {&lt;br /&gt;
            llSetKeyframedMotion(listOfKeyframes, [KFM_MODE, KFM_REVERSE]);&lt;br /&gt;
//      }&lt;br /&gt;
&lt;br /&gt;
        open = !open;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
After editing prim position, rotation and/or size the script should be reset in order to update the motion&lt;br /&gt;
==More Examples==&lt;br /&gt;
# [https://wiki.secondlife.com/wiki/User:Dora_Gustafson/Pendulum_motion Pendulum motion] Simple Pendulum Motion in 24 Key Frames, a good motion for a swing&lt;br /&gt;
# [https://wiki.secondlife.com/wiki/User:Dora_Gustafson/Harmonic_Oscillator_motion Oscillator motion] Motion in 12 Key Frames&lt;br /&gt;
|notes=&lt;br /&gt;
Potential Use Cases:&lt;br /&gt;
* Elevators&lt;br /&gt;
* Moving platforms&lt;br /&gt;
* Trains/Fixed-Track Vehicles&lt;br /&gt;
* Moving doors/walls/gates&lt;br /&gt;
* Windmills and other machines&lt;br /&gt;
Targeted coordinate systems: The Translation is in Global coordinates, the Rotation in Local coordinates&lt;br /&gt;
* Say: a move on the X-axis will move the object along the global, region X-axis no matter how the object is rotated&lt;br /&gt;
* Say: a rotate around the X-axis will rotate the object around it&#039;s local, prim X-axis no matter the object&#039;s rotation&lt;br /&gt;
* When the object is not rotated in the global system you won&#039;t notice the difference&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Movement&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174072</id>
		<title>Limits</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174072"/>
		<updated>2012-11-01T13:28:14Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Undo revision 1174070 (zero index, test was flawed) by Stickman Ingmann (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{KBmaster}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Summary ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
The Second Life Viewer and simulators have a division of labor, keeping track of the data that makes Second Life run. The Viewer&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Handle locations of objects.&lt;br /&gt;
* Get velocities and other physics information, and does simple physics to keep track of what is moving where.&lt;br /&gt;
&lt;br /&gt;
The simulator&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Run the physics engine.&lt;br /&gt;
* Detect collisions.&lt;br /&gt;
* Keep track of where everything is&lt;br /&gt;
* Send locations of content to the Viewer along with updates when certain changes occur.&lt;br /&gt;
&lt;br /&gt;
Limits are necessary for all of these components to work together. The list below outlines many of the &#039;&#039;&#039;Second Life numerical limits that affect your inworld experience&#039;&#039;&#039;. Some of these will likely change over time, so if you spot something incorrect/outdated, please take a moment to update it.&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|1=The scope of this page is focused on Linden Lab&#039;s official Viewers, keeping in mind [[Third_Party_Viewer_Directory|3rd-party viewers may differ]]. Cite sources and provide substantiation for limits that aren&#039;t provided by Linden Lab. Also, unconfirmed speculation [[Talk:Limits|goes on this discussion page]]. Don&#039;t add data without a hard limit, and don&#039;t add obscure trivia that doesn&#039;t practically affect the general inworld experience.|width=80%}}&lt;br /&gt;
&lt;br /&gt;
== [[Avatar]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. # of attachments&#039;&#039;&#039; - 38 combined [[HUD]] or body attachments.&lt;br /&gt;
** They can be viewed by right-clicking your avatar and choosing &#039;&#039;&#039;Take Off&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;HUD&#039;&#039;&#039; or &#039;&#039;&#039;Detach&#039;&#039;&#039;.&lt;br /&gt;
** With the formal introduction of [[multiple attachments|multiple attachments to a single point]] in Viewer 2.4, you can attach up to 38 total objects, and they can all be attached to a single point. &lt;br /&gt;
* &#039;&#039;&#039;Max. # of clothing layers per slot&#039;&#039;&#039; - 5 (this includes alpha and Tattoo Layers)&lt;br /&gt;
* &#039;&#039;&#039;Max. unassisted fly height&#039;&#039;&#039; - Stable hover at 4096m.&lt;br /&gt;
** You can easily acquire a flight attachment to fly high. Also see [[flight limit]] and [[Limits#Navigation|the Navigation section]] below.&lt;br /&gt;
* &#039;&#039;&#039;Common shoe sizes&#039;&#039;&#039; - Most women&#039;s shoes are designed for a size 0 (zero) foot. Men&#039;s generally scale up to 14.&lt;br /&gt;
** You can check this by going to Edit menu &amp;gt; Appearance and clicking on the Shape &amp;gt; Legs tab.&lt;br /&gt;
&amp;lt;!--Can someone verify the following?&lt;br /&gt;
* &#039;&#039;&#039;Min. length of avatar name&#039;&#039;&#039; - 2 for first name, 2 for last name, 5 in total (including the space).--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Max. length of avatar name&#039;&#039;&#039; - 31 for first name, 31 for last name, 63 in total (including the space).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of {{LSLGC|Username}}&#039;&#039;&#039; - All lower case and a maximum of 63 including the &#039;.&#039;(eg; firstname.lastname)&lt;br /&gt;
**Older account user names are a combination of the First and last name in lower case separated by a period(.)(eg; lilmix.pixelmaid)&lt;br /&gt;
**Modern user names are a single name(no period)(eg; john1234) - &#039;&#039;&#039;Max.&#039;&#039;&#039; length is 31 characters&lt;br /&gt;
**The {{LSLGC|Legacy Name}}s for modern user names always shows Resident as the last name. So the Max is 40 characters in total for a new avatar&#039;s legacy name(including the space and last name &#039;Resident&#039;)&lt;br /&gt;
*&#039;&#039;&#039;Min. length of [[Display_Names]]&#039;&#039;&#039; - At least one script character&lt;br /&gt;
*&#039;&#039;&#039;Max. length of Display Names&#039;&#039;&#039; - 31 characters&lt;br /&gt;
**Display Names can include most Unicode script characters, spaces, and some punctuation.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. avatar speed&#039;&#039;&#039; - 250m/s (with only attachments to assist)&lt;br /&gt;
* &#039;&#039;&#039;Max. teleport speed&#039;&#039;&#039;&amp;lt;!-- - 3 teleports per 15 seconds (server 1.27.0) and 10 teleports per 15 seconds (server 1.27.1)--&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.1&#039;&#039;&#039; - 10 teleports per 15 seconds&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.0&#039;&#039;&#039; - 3 teleports per 15 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Animation]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of animation:&#039;&#039;&#039; 30.0 seconds&lt;br /&gt;
* &#039;&#039;&#039;Min. animation priority:&#039;&#039;&#039; 0&lt;br /&gt;
* &#039;&#039;&#039;Max. animation priority:&#039;&#039;&#039; 4 (5 with custom tools)&lt;br /&gt;
* &#039;&#039;&#039;Max. unique joints per animation:&#039;&#039;&#039; 32&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. [[prim]] dimensions (non-[[megaprim]])&#039;&#039;&#039; - 64&amp;amp;times;64&amp;amp;times;64m&lt;br /&gt;
** it was 10&amp;amp;times;10&amp;amp;times;10m before Second Life Server 11.08.17.238770 &lt;br /&gt;
* &#039;&#039;&#039;Min. prim dimensions&#039;&#039;&#039; - 0.01&amp;amp;times;0.01&amp;amp;times;0.01m&lt;br /&gt;
* &#039;&#039;&#039;Max. # of prims in a linkset&#039;&#039;&#039; - 256 &lt;br /&gt;
** It was 255 before SL Server 1.26.&lt;br /&gt;
** with the addition of Mesh, LI is not a factor, So a max of 256 0.5 LI objects can be linked for a max LI of 128 in that case.&lt;br /&gt;
* &#039;&#039;&#039;Max. link distance&#039;&#039;&#039; - See [[Linkability Rules]].&lt;br /&gt;
* &#039;&#039;&#039;Max. physics weight for an object to be set physical&#039;&#039;&#039; - 32.0&lt;br /&gt;
** If you try to link more, it&#039;ll either say &amp;quot;Can&#039;t enable physics for objects with more than 32 primitives&amp;quot; or &amp;quot;Object has too many primitives -- its dynamics have been disabled.&amp;quot;.&lt;br /&gt;
** On server versions 1.38 and below, each sitting avatar counted as 1 prim. From 1.40.2 the limit is only on actual prims.&lt;br /&gt;
* &#039;&#039;&#039;Max. build or rez height&#039;&#039;&#039; - 4,096m&lt;br /&gt;
** This is 768m for Viewers prior to SL 1.20&lt;br /&gt;
* &#039;&#039;&#039;Max. prim name length&#039;&#039;&#039; - 63 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: This is the same total character limit as avatar names.&lt;br /&gt;
* &#039;&#039;&#039;Max. prim description length&#039;&#039;&#039; - 127 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: &lt;br /&gt;
* &#039;&#039;&#039;Temporary prim lifetime&#039;&#039;&#039; - around 60 seconds&lt;br /&gt;
* &#039;&#039;&#039;Max. number of temporary prims&#039;&#039;&#039; - regular_prim_limit - current_regular_prims + minimum(0.5 * regular_prim_limit + 400, 1000)&lt;br /&gt;
** From [http://forums-archive.secondlife.com/8/cd/305651/1.html Andrew Linden&#039;s February 2009 discussion])&lt;br /&gt;
* &#039;&#039;&#039;Max. length of hovertext (via [[llSetText]] or [[PRIM_TEXT]])&#039;&#039;&#039; - 254 bytes UTF-8 [[string]]&lt;br /&gt;
&lt;br /&gt;
== Chat (text) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Whisper distance&#039;&#039;&#039; - 10 m&lt;br /&gt;
* &#039;&#039;&#039;Chat distance&#039;&#039;&#039; - 20 m&lt;br /&gt;
* &#039;&#039;&#039;Shout distance&#039;&#039;&#039; - 100 m&lt;br /&gt;
** &#039;&#039;Rule of thumb:&#039;&#039; when you&#039;re at default zoom (&#039;&#039;&#039;View&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reset View&#039;&#039;&#039;), if you can see another person&#039;s nametag, they can see your chat. If they&#039;re far enough away that you don&#039;t see a nametag, they won&#039;t &amp;quot;hear&amp;quot; you unless you shout.&lt;br /&gt;
** Text spoken as a &amp;quot;Chat&amp;quot; step in a gesture cannot be shouted or whispered&lt;br /&gt;
** Text spoken as &amp;quot;Replace with&amp;quot; text in a gesture can be whispered or shouted in Viewer 2 either by putting &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the start of the &amp;quot;Replace with&amp;quot; text or by typing &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the beginning of the nearby chat input bar, followed by the gesture&#039;s trigger text. (Though, if you do both, or if a gesture with built-in &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; is used mid-sentence, the &amp;quot;/whisper&amp;quot; or &amp;quot;/shout&amp;quot; will appear literally.) Viewer 1 does not honor &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; and will always send them literally.&lt;br /&gt;
* &#039;&#039;&#039;Max. length of a chat message&#039;&#039;&#039; - 1024 bytes/single-byte characters&lt;br /&gt;
* As of 8/13/2012 Instant Messages sent via llInstantMessage() can send a maximum of 1180 single byte characters.&lt;br /&gt;
** The same holds true for an IM &amp;lt;-&amp;gt; email replies.&lt;br /&gt;
*** When the receiver is offline, if they set an IM to Email feature (&#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Preferences&#039;&#039;&#039; (or press {{K|Ctrl|P}}), go to the &#039;&#039;&#039;Communication&#039;&#039;&#039; tab and check the &#039;&#039;&#039;Send IM to Email&#039;&#039;&#039; checkbox), it will send offline messages directly to the mailbox connected to your account. When an offline message is received via Email, this message can also be answered via Email again. The length of properly delivered Email replies is limited to 1023 bytes/single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Capped&#039;&#039;&#039; - Maximum number of offline messages (involving [[IM]]s, inventory offers, group notices and group invitations) received before messages get capped is 25.&lt;br /&gt;
** Senders can&#039;t know whether their messages were capped or not.&lt;br /&gt;
* &#039;&#039;&#039;Email -&amp;gt; IM&#039;&#039;&#039; replies can be sent up to 5 days after receiving the offline IM the email is meant to answer.&amp;lt;sup&amp;gt;[&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://blogs.secondlife.com/community/features/blog/2007/02/06/im-to-e-mail-return-addresses-changing blog]&amp;lt;/span&amp;gt;]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;IMs&#039;&#039;&#039; are retained on Linden Lab&#039;s servers for up to 31 days before being discarded. For example, if someone sends you an Instant Message and the next time you login is 33 days later, you won&#039;t get it.&lt;br /&gt;
** Torley confirmed this with Kelly Linden.&lt;br /&gt;
* The number of &#039;&#039;&#039;IMs&#039;&#039;&#039; an object can send in one hour is 5000.&lt;br /&gt;
&lt;br /&gt;
== [[Gesture]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shortcut key mapping:&#039;&#039;&#039; 33 unique combinations, since {{K|F2}}&amp;amp;ndash;{{K|F12}} can be used with the {{K|Ctrl}} or {{K|Shift}} modifiers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Chat step length:&#039;&#039;&#039; 127 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Wait time:&#039;&#039;&#039; 3600 seconds (one hour).&lt;br /&gt;
&lt;br /&gt;
== [[Group]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of groups you can belong to:&#039;&#039;&#039; 42&lt;br /&gt;
** Roles within groups are sort of like sub-groups. In many cases, you can use them instead of creating new groups.&lt;br /&gt;
* &#039;&#039;&#039;Minimum number of members in a group:&#039;&#039;&#039; 2&lt;br /&gt;
** A group with only 1 person for 48 hours will be disbanded (cancelled). Unless the group owns land.&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of roles allowed in a group:&#039;&#039;&#039; 10 (including &amp;quot;Owners&amp;quot; and &amp;quot;Everyone&amp;quot;, which cannot be deleted)&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Name:&#039;&#039;&#039; 35 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Title:&#039;&#039;&#039; 20 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Length of a Group Notice:&#039;&#039;&#039; 512 single-byte characters.&lt;br /&gt;
&lt;br /&gt;
== [[Inventory]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of inventory items that can be sent in a folder:&#039;&#039;&#039; 42&lt;br /&gt;
** Folders count as items too. This has more to do with packet size limits than cheeky Douglas Adams references.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard line:&#039;&#039;&#039; None, but scripts can only read the first 255 bytes.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard size:&#039;&#039;&#039; 65,536 bytes&lt;br /&gt;
* &#039;&#039;&#039;Number of items in the Library:&#039;&#039;&#039; 1,248 as of 2010-06-17&lt;br /&gt;
** Verified by [[How_does_the_Library_work|hiding the Library]] and counting the difference.&lt;br /&gt;
&lt;br /&gt;
== [[Land]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum [[Land#Parcel|parcel]] size:&#039;&#039;&#039; 65,536 meters²&lt;br /&gt;
** Covering a whole region, or square on the World Map.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel size:&#039;&#039;&#039; 16 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel name length:&#039;&#039;&#039; 63 single-byte characters&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel description length:&#039;&#039;&#039; 255 characters&lt;br /&gt;
* &#039;&#039;&#039;Region name length:&#039;&#039;&#039; Under Linden Concierge policy, minimum of 3 characters, and a maximum of 25 characters (including spaces). See [[Linden Lab Official:Guidelines for Private Region Naming|Guidelines for Private Region Naming]].&lt;br /&gt;
** Rare exceptions exist, like [http://slurl.com/secondlife/Q/128/128/24 Q].&lt;br /&gt;
* &#039;&#039;&#039;Maximum &amp;quot;NO ENTRY&amp;quot; ban line height:&#039;&#039;&#039; is for all options 80 meter. Only the option &#039;Banned Residents&#039; (named) has a 5020 meter ban line high, which is visible up to a high of 800 meter above the terrain mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum prims in a [[Land#Region|region]]:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 15,000&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 3,750&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 750&lt;br /&gt;
* &#039;&#039;&#039;Maximum auto return value&#039;&#039;&#039;: Besides &amp;quot;0&amp;quot; (which means &#039;&#039;never&#039;&#039;), {{HoverText|999,999|Almost 23 months}} minutes is the highest auto return value.&lt;br /&gt;
* &#039;&#039;&#039;Terraforming limits:&#039;&#039;&#039;&lt;br /&gt;
** Most mainland can be raised/lowered by 4 meters (+/-).&lt;br /&gt;
** Some mainland cannot be terraformed, including: Bay City Regions, Blumfield, Boardman, Brown, De Haro, Nautilus City Regions, Nova Albion Regions, Shermerville Regions, and West Haven.&lt;br /&gt;
** A few, very old mainland Regions like Da Boom have a terraform range of 40 meters (+/-).&lt;br /&gt;
** Estate (private island) terraformability is settable to a maximum of 100 meters (+/-) by the estate owner or managers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum water height:&#039;&#039;&#039; 100 meters using inworld controls (mainland limit), 255 meters by using a *.raw file upload.&lt;br /&gt;
** Region water height is usually 20 meters, and adjacent regions should have the same water height, or else they will look discontinuous.&lt;br /&gt;
* &#039;&#039;&#039;Maximum terrain height:&#039;&#039;&#039; 255 meters using inworld controls (mainland limit), 510 meters by using a *.raw file upload.&lt;br /&gt;
* &#039;&#039;&#039;Miscellaneous estate limits:&#039;&#039;&#039; You can have a maximum of 10 estate managers, 500 allowed Residents, 63 allowed groups, and 500 banned Residents.&lt;br /&gt;
** See World menu &amp;gt; Region/Estate &amp;gt; Estate tab.&lt;br /&gt;
* &#039;&#039;&#039;Mainland maximum number of agents&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100 (Historically set to 40 by LL but this does vary. Some meeting areas have this set to 60 and higher.)&lt;br /&gt;
*** Recent server performance improvements make regions with 60 agents in them perform quite well excepting the issue described in {{JIRA|SVC-3895}}.&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Island maximum number of agents:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Freeze Time:&#039;&#039;&#039; Land owners can [[freeze]] other Residents for up to 30 seconds.  Members of land owning groups can also be granted this ability.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Places or All search:&#039;&#039;&#039; 144 meters² &amp;lt;!-- 128 and under are disabled --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Events:&#039;&#039;&#039; 512 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum altitude for event listings:&#039;&#039;&#039;  768 meters ({{JIRA|WEB-814}})&lt;br /&gt;
* &#039;&#039;&#039;Maximum heights that objects can be seen on the [[World Map]]:&#039;&#039;&#039; 400.005m&lt;br /&gt;
* &#039;&#039;&#039;[[Classic clouds]] layer:&#039;&#039;&#039; Approximately 150-225 meters, although the edges of particles can appear to exceed that.&lt;br /&gt;
&lt;br /&gt;
== [[Mesh]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Vertices:&#039;&#039;&#039; 65536 vertices per LOD for each Mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum COLLADA File Size:&#039;&#039;&#039; The maximum mesh asset size after compression is 8MB, roughly equivalent to a 256MB raw COLLADA file.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Bone Influence Weights Per Vertex:&#039;&#039;&#039; 4&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Mesh:&#039;&#039;&#039; 8&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Face:&#039;&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;[https://secondlife.com/currency/describe-limits.php Billing and Trading Limits]&#039;&#039;&#039; - Includes [https://secondlife.com/whatis/economy-market.php LindeX] currency exchange limits.&lt;br /&gt;
*&#039;&#039;&#039;Contacts in Communication &amp;gt; Friends tab &#039;&#039;&#039; - A maximum of 20 simultaneous contacts can be selected to change permissions, remove, or invite for a conference chat.&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Max Alt.jpg|thumb|right|435px|&#039;&#039;&#039;Height counter error above 2147483647 meters&#039;&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;&#039;Absolute height limit:&#039;&#039;&#039; [http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing 2147483647]&amp;amp;nbsp;=&amp;amp;nbsp;2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;&amp;amp;nbsp;−&amp;amp;nbsp;1 meters, which causes the altitude counter to roll over. Altitudes well below this cause graphics errors probably due to limited floating point number precision.&lt;br /&gt;
* &#039;&#039;&#039;Highest z-value of an [[SLurl]], that will still teleport you to a positive altitude:&#039;&#039;&#039; 2147483583&lt;br /&gt;
** This is lower than the &#039;&#039;Absolute height limit&#039;&#039; above probably because of precision issues. Any value higher than 2147483583 would be rounded up to something beyond 2147483647 and thus cause an [http://en.wikipedia.org/wiki/Arithmetic_overflow overflow], while 2147483583 will still be rounded down to 2147483520 (see below).&lt;br /&gt;
* &#039;&#039;&#039;Highest altitude you can teleport to with an SLurl:&#039;&#039;&#039; 2147483520 meters&lt;br /&gt;
&lt;br /&gt;
== [[Profile]] ==&lt;br /&gt;
&lt;br /&gt;
Each 7-bit ASCII character is encoded in one byte. International characters might need more bytes. When pasting text instead of typing, you can get in one byte more into each of the below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;2nd Life tab&#039;s About field&#039;&#039;&#039; - 510 bytes&lt;br /&gt;
* &#039;&#039;&#039;Picks tab&#039;&#039;&#039; - 10 picks with 1022 bytes each&lt;br /&gt;
* &#039;&#039;&#039;1st Life tab&#039;s Info field&#039;&#039;&#039; - 253 bytes&lt;br /&gt;
* &#039;&#039;&#039;Classified tab&#039;&#039;&#039; - 100 listings with x bytes each&lt;br /&gt;
* &#039;&#039;&#039;My Notes&#039;&#039;&#039; - 1022 bytes&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Healthy Viewer FPS&#039;&#039;&#039; - Generally, FPS above 15 is good. The higher it gets, the smoother. You can check via Help menu &amp;gt; Lag Meter, or for more advanced usage, see View menu &amp;gt; Statistics Bar.&lt;br /&gt;
* &#039;&#039;&#039;Avatar Rendering Cost scores&#039;&#039;&#039; - [[Avatar Rendering Cost|Learn all about it!]]&lt;br /&gt;
&lt;br /&gt;
== [[Scripting]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Height at which scripts reactivate on a no-script parcel&#039;&#039;&#039; - 50 m above terrain mesh. Scripted objects that take controls continue to remain active when you fly down or enter a no-script parcel.&lt;br /&gt;
* &#039;&#039;&#039;Maximum height where scripts can run&#039;&#039;&#039; - none, as long as the object remains rezzed or attached.&lt;br /&gt;
* &#039;&#039;&#039;Maximum script source code size&#039;&#039;&#039; - 65536 single byte characters.&lt;br /&gt;
* For specific scripting limits, lookup calls in the &#039;&#039;&#039;[[LSL Portal]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== [[Sound]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Sound Length:&#039;&#039;&#039; 10 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Textures]] ==&lt;br /&gt;
* &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Aspect_ratio Aspect ratios]&#039;&#039;&#039; of profile, place, etc. pictures — all of these were measured at UI size (Edit menu &amp;gt; Preferences &amp;gt; General tab &amp;gt; UI Size) = 1.000:&lt;br /&gt;
&lt;br /&gt;
=== 1.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
(official Viewer up to 1.23.5, most [[Alternate viewers|Third Party Viewers]])&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; All for &amp;quot;Classifieds&amp;quot;, &amp;quot;People&amp;quot;, and &amp;quot;Places&amp;quot;&#039;&#039;&#039; - 4:3 (256&amp;amp;times;192 pi&amp;amp;times;els)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Places and Classified tabs&#039;&#039;&#039; - ~7:5 (398&amp;amp;times;282 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Land tab&#039;&#039;&#039; - ~7:5 (358&amp;amp;times;252 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~4:3 (178&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks tab&#039;&#039;&#039; - 16:9 (288&amp;amp;times;162 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 1st Life tab&#039;&#039;&#039; - 1:1 (133&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Classifieds tab&#039;&#039;&#039; - ~3:2 (206&amp;amp;times;137 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Web tab&#039;&#039;&#039; - 1:1 (400&amp;amp;times;400 pixels)&lt;br /&gt;
** A scrollbar uses 15 pixels on the right-hand side.&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~3:2 (178&amp;amp;times;117 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Group Information &amp;gt; General tab&#039;s &amp;quot;Group Insignia&amp;quot;&#039;&#039;&#039; - 1:1 (126&amp;amp;times;126 pixels)&lt;br /&gt;
** Some of these textures are shared (for example, Search &amp;gt; All place pages, Search &amp;gt; Places, and About Land &amp;gt; Options use the same image), so you should pick a well-balanced ratio and size.&lt;br /&gt;
** [[Texture_aspect_ratios|Learn how to get correct texture aspect ratios when editing images.]]&lt;br /&gt;
&lt;br /&gt;
=== 2.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds thumbnail&#039;&#039;&#039; - 4:3 (60&amp;amp;times;45 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded&#039;&#039;&#039; - ~4:3 (252&amp;amp;times;188 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded &amp;gt; Details&#039;&#039;&#039; - 17:7 (272&amp;amp;times;112 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; People&#039;&#039;&#039; - 4:3 (188&amp;amp;times;141 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide thumbnail&#039;&#039;&#039; - ~4:3 (45&amp;amp;times;34 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide expanded&#039;&#039;&#039; - 5:3 (250&amp;amp;times;150 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~1:1 (100&amp;amp;times;99 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks thumbnail&#039;&#039;&#039; - 8:5 (88&amp;amp;times;55 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Pick expanded&#039;&#039;&#039; - ~5:3 (285&amp;amp;times;172 pixels)&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~20:13 (193&amp;amp;times;125 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Places &amp;gt; More information&#039;&#039;&#039; - ~11:7 (272&amp;amp;times;173 pixels)&lt;br /&gt;
&lt;br /&gt;
=== All Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum texture size&#039;&#039;&#039; - 1024&amp;amp;times;1024 pixels&lt;br /&gt;
** All Second Life textures are constrained to [http://en.wikipedia.org/wiki/Power_of_2 powers of 2] (e.g., 128, 256, 512).&lt;br /&gt;
** Some textures inworld have a resolution as high as 2048&amp;amp;times;2048; this is due to a previous limit that was higher.&lt;br /&gt;
** We strongly recommend you use as small textures as possible because larger ones consume more memory and take substantially longer to load.&lt;br /&gt;
** Where large textures are being forced by import to only 512&amp;amp;times;512, lower your ...&amp;gt; Preferences &amp;gt;...&amp;gt; UI Size under 1.0, to increase import size to the max 1024&amp;amp;times;1024.&lt;br /&gt;
&lt;br /&gt;
[[Category:Creation]] [[Category:Tutorials]] [[Category:Lists]]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
In general 1 byte is enough to contain one character.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174070</id>
		<title>Limits</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174070"/>
		<updated>2012-11-01T13:14:22Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: num_motions &amp;gt; LL_CHARACTER_MAX_JOINTS, so 31 not 32.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{KBmaster}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Summary ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
The Second Life Viewer and simulators have a division of labor, keeping track of the data that makes Second Life run. The Viewer&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Handle locations of objects.&lt;br /&gt;
* Get velocities and other physics information, and does simple physics to keep track of what is moving where.&lt;br /&gt;
&lt;br /&gt;
The simulator&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Run the physics engine.&lt;br /&gt;
* Detect collisions.&lt;br /&gt;
* Keep track of where everything is&lt;br /&gt;
* Send locations of content to the Viewer along with updates when certain changes occur.&lt;br /&gt;
&lt;br /&gt;
Limits are necessary for all of these components to work together. The list below outlines many of the &#039;&#039;&#039;Second Life numerical limits that affect your inworld experience&#039;&#039;&#039;. Some of these will likely change over time, so if you spot something incorrect/outdated, please take a moment to update it.&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|1=The scope of this page is focused on Linden Lab&#039;s official Viewers, keeping in mind [[Third_Party_Viewer_Directory|3rd-party viewers may differ]]. Cite sources and provide substantiation for limits that aren&#039;t provided by Linden Lab. Also, unconfirmed speculation [[Talk:Limits|goes on this discussion page]]. Don&#039;t add data without a hard limit, and don&#039;t add obscure trivia that doesn&#039;t practically affect the general inworld experience.|width=80%}}&lt;br /&gt;
&lt;br /&gt;
== [[Avatar]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. # of attachments&#039;&#039;&#039; - 38 combined [[HUD]] or body attachments.&lt;br /&gt;
** They can be viewed by right-clicking your avatar and choosing &#039;&#039;&#039;Take Off&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;HUD&#039;&#039;&#039; or &#039;&#039;&#039;Detach&#039;&#039;&#039;.&lt;br /&gt;
** With the formal introduction of [[multiple attachments|multiple attachments to a single point]] in Viewer 2.4, you can attach up to 38 total objects, and they can all be attached to a single point. &lt;br /&gt;
* &#039;&#039;&#039;Max. # of clothing layers per slot&#039;&#039;&#039; - 5 (this includes alpha and Tattoo Layers)&lt;br /&gt;
* &#039;&#039;&#039;Max. unassisted fly height&#039;&#039;&#039; - Stable hover at 4096m.&lt;br /&gt;
** You can easily acquire a flight attachment to fly high. Also see [[flight limit]] and [[Limits#Navigation|the Navigation section]] below.&lt;br /&gt;
* &#039;&#039;&#039;Common shoe sizes&#039;&#039;&#039; - Most women&#039;s shoes are designed for a size 0 (zero) foot. Men&#039;s generally scale up to 14.&lt;br /&gt;
** You can check this by going to Edit menu &amp;gt; Appearance and clicking on the Shape &amp;gt; Legs tab.&lt;br /&gt;
&amp;lt;!--Can someone verify the following?&lt;br /&gt;
* &#039;&#039;&#039;Min. length of avatar name&#039;&#039;&#039; - 2 for first name, 2 for last name, 5 in total (including the space).--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Max. length of avatar name&#039;&#039;&#039; - 31 for first name, 31 for last name, 63 in total (including the space).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of {{LSLGC|Username}}&#039;&#039;&#039; - All lower case and a maximum of 63 including the &#039;.&#039;(eg; firstname.lastname)&lt;br /&gt;
**Older account user names are a combination of the First and last name in lower case separated by a period(.)(eg; lilmix.pixelmaid)&lt;br /&gt;
**Modern user names are a single name(no period)(eg; john1234) - &#039;&#039;&#039;Max.&#039;&#039;&#039; length is 31 characters&lt;br /&gt;
**The {{LSLGC|Legacy Name}}s for modern user names always shows Resident as the last name. So the Max is 40 characters in total for a new avatar&#039;s legacy name(including the space and last name &#039;Resident&#039;)&lt;br /&gt;
*&#039;&#039;&#039;Min. length of [[Display_Names]]&#039;&#039;&#039; - At least one script character&lt;br /&gt;
*&#039;&#039;&#039;Max. length of Display Names&#039;&#039;&#039; - 31 characters&lt;br /&gt;
**Display Names can include most Unicode script characters, spaces, and some punctuation.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. avatar speed&#039;&#039;&#039; - 250m/s (with only attachments to assist)&lt;br /&gt;
* &#039;&#039;&#039;Max. teleport speed&#039;&#039;&#039;&amp;lt;!-- - 3 teleports per 15 seconds (server 1.27.0) and 10 teleports per 15 seconds (server 1.27.1)--&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.1&#039;&#039;&#039; - 10 teleports per 15 seconds&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.0&#039;&#039;&#039; - 3 teleports per 15 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Animation]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of animation:&#039;&#039;&#039; 30.0 seconds&lt;br /&gt;
* &#039;&#039;&#039;Min. animation priority:&#039;&#039;&#039; 0&lt;br /&gt;
* &#039;&#039;&#039;Max. animation priority:&#039;&#039;&#039; 4 (5 with custom tools)&lt;br /&gt;
* &#039;&#039;&#039;Max. unique joints per animation:&#039;&#039;&#039; 31&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. [[prim]] dimensions (non-[[megaprim]])&#039;&#039;&#039; - 64&amp;amp;times;64&amp;amp;times;64m&lt;br /&gt;
** it was 10&amp;amp;times;10&amp;amp;times;10m before Second Life Server 11.08.17.238770 &lt;br /&gt;
* &#039;&#039;&#039;Min. prim dimensions&#039;&#039;&#039; - 0.01&amp;amp;times;0.01&amp;amp;times;0.01m&lt;br /&gt;
* &#039;&#039;&#039;Max. # of prims in a linkset&#039;&#039;&#039; - 256 &lt;br /&gt;
** It was 255 before SL Server 1.26.&lt;br /&gt;
** with the addition of Mesh, LI is not a factor, So a max of 256 0.5 LI objects can be linked for a max LI of 128 in that case.&lt;br /&gt;
* &#039;&#039;&#039;Max. link distance&#039;&#039;&#039; - See [[Linkability Rules]].&lt;br /&gt;
* &#039;&#039;&#039;Max. physics weight for an object to be set physical&#039;&#039;&#039; - 32.0&lt;br /&gt;
** If you try to link more, it&#039;ll either say &amp;quot;Can&#039;t enable physics for objects with more than 32 primitives&amp;quot; or &amp;quot;Object has too many primitives -- its dynamics have been disabled.&amp;quot;.&lt;br /&gt;
** On server versions 1.38 and below, each sitting avatar counted as 1 prim. From 1.40.2 the limit is only on actual prims.&lt;br /&gt;
* &#039;&#039;&#039;Max. build or rez height&#039;&#039;&#039; - 4,096m&lt;br /&gt;
** This is 768m for Viewers prior to SL 1.20&lt;br /&gt;
* &#039;&#039;&#039;Max. prim name length&#039;&#039;&#039; - 63 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: This is the same total character limit as avatar names.&lt;br /&gt;
* &#039;&#039;&#039;Max. prim description length&#039;&#039;&#039; - 127 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: &lt;br /&gt;
* &#039;&#039;&#039;Temporary prim lifetime&#039;&#039;&#039; - around 60 seconds&lt;br /&gt;
* &#039;&#039;&#039;Max. number of temporary prims&#039;&#039;&#039; - regular_prim_limit - current_regular_prims + minimum(0.5 * regular_prim_limit + 400, 1000)&lt;br /&gt;
** From [http://forums-archive.secondlife.com/8/cd/305651/1.html Andrew Linden&#039;s February 2009 discussion])&lt;br /&gt;
* &#039;&#039;&#039;Max. length of hovertext (via [[llSetText]] or [[PRIM_TEXT]])&#039;&#039;&#039; - 254 bytes UTF-8 [[string]]&lt;br /&gt;
&lt;br /&gt;
== Chat (text) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Whisper distance&#039;&#039;&#039; - 10 m&lt;br /&gt;
* &#039;&#039;&#039;Chat distance&#039;&#039;&#039; - 20 m&lt;br /&gt;
* &#039;&#039;&#039;Shout distance&#039;&#039;&#039; - 100 m&lt;br /&gt;
** &#039;&#039;Rule of thumb:&#039;&#039; when you&#039;re at default zoom (&#039;&#039;&#039;View&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reset View&#039;&#039;&#039;), if you can see another person&#039;s nametag, they can see your chat. If they&#039;re far enough away that you don&#039;t see a nametag, they won&#039;t &amp;quot;hear&amp;quot; you unless you shout.&lt;br /&gt;
** Text spoken as a &amp;quot;Chat&amp;quot; step in a gesture cannot be shouted or whispered&lt;br /&gt;
** Text spoken as &amp;quot;Replace with&amp;quot; text in a gesture can be whispered or shouted in Viewer 2 either by putting &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the start of the &amp;quot;Replace with&amp;quot; text or by typing &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the beginning of the nearby chat input bar, followed by the gesture&#039;s trigger text. (Though, if you do both, or if a gesture with built-in &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; is used mid-sentence, the &amp;quot;/whisper&amp;quot; or &amp;quot;/shout&amp;quot; will appear literally.) Viewer 1 does not honor &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; and will always send them literally.&lt;br /&gt;
* &#039;&#039;&#039;Max. length of a chat message&#039;&#039;&#039; - 1024 bytes/single-byte characters&lt;br /&gt;
* As of 8/13/2012 Instant Messages sent via llInstantMessage() can send a maximum of 1180 single byte characters.&lt;br /&gt;
** The same holds true for an IM &amp;lt;-&amp;gt; email replies.&lt;br /&gt;
*** When the receiver is offline, if they set an IM to Email feature (&#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Preferences&#039;&#039;&#039; (or press {{K|Ctrl|P}}), go to the &#039;&#039;&#039;Communication&#039;&#039;&#039; tab and check the &#039;&#039;&#039;Send IM to Email&#039;&#039;&#039; checkbox), it will send offline messages directly to the mailbox connected to your account. When an offline message is received via Email, this message can also be answered via Email again. The length of properly delivered Email replies is limited to 1023 bytes/single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Capped&#039;&#039;&#039; - Maximum number of offline messages (involving [[IM]]s, inventory offers, group notices and group invitations) received before messages get capped is 25.&lt;br /&gt;
** Senders can&#039;t know whether their messages were capped or not.&lt;br /&gt;
* &#039;&#039;&#039;Email -&amp;gt; IM&#039;&#039;&#039; replies can be sent up to 5 days after receiving the offline IM the email is meant to answer.&amp;lt;sup&amp;gt;[&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://blogs.secondlife.com/community/features/blog/2007/02/06/im-to-e-mail-return-addresses-changing blog]&amp;lt;/span&amp;gt;]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;IMs&#039;&#039;&#039; are retained on Linden Lab&#039;s servers for up to 31 days before being discarded. For example, if someone sends you an Instant Message and the next time you login is 33 days later, you won&#039;t get it.&lt;br /&gt;
** Torley confirmed this with Kelly Linden.&lt;br /&gt;
* The number of &#039;&#039;&#039;IMs&#039;&#039;&#039; an object can send in one hour is 5000.&lt;br /&gt;
&lt;br /&gt;
== [[Gesture]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shortcut key mapping:&#039;&#039;&#039; 33 unique combinations, since {{K|F2}}&amp;amp;ndash;{{K|F12}} can be used with the {{K|Ctrl}} or {{K|Shift}} modifiers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Chat step length:&#039;&#039;&#039; 127 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Wait time:&#039;&#039;&#039; 3600 seconds (one hour).&lt;br /&gt;
&lt;br /&gt;
== [[Group]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of groups you can belong to:&#039;&#039;&#039; 42&lt;br /&gt;
** Roles within groups are sort of like sub-groups. In many cases, you can use them instead of creating new groups.&lt;br /&gt;
* &#039;&#039;&#039;Minimum number of members in a group:&#039;&#039;&#039; 2&lt;br /&gt;
** A group with only 1 person for 48 hours will be disbanded (cancelled). Unless the group owns land.&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of roles allowed in a group:&#039;&#039;&#039; 10 (including &amp;quot;Owners&amp;quot; and &amp;quot;Everyone&amp;quot;, which cannot be deleted)&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Name:&#039;&#039;&#039; 35 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Title:&#039;&#039;&#039; 20 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Length of a Group Notice:&#039;&#039;&#039; 512 single-byte characters.&lt;br /&gt;
&lt;br /&gt;
== [[Inventory]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of inventory items that can be sent in a folder:&#039;&#039;&#039; 42&lt;br /&gt;
** Folders count as items too. This has more to do with packet size limits than cheeky Douglas Adams references.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard line:&#039;&#039;&#039; None, but scripts can only read the first 255 bytes.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard size:&#039;&#039;&#039; 65,536 bytes&lt;br /&gt;
* &#039;&#039;&#039;Number of items in the Library:&#039;&#039;&#039; 1,248 as of 2010-06-17&lt;br /&gt;
** Verified by [[How_does_the_Library_work|hiding the Library]] and counting the difference.&lt;br /&gt;
&lt;br /&gt;
== [[Land]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum [[Land#Parcel|parcel]] size:&#039;&#039;&#039; 65,536 meters²&lt;br /&gt;
** Covering a whole region, or square on the World Map.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel size:&#039;&#039;&#039; 16 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel name length:&#039;&#039;&#039; 63 single-byte characters&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel description length:&#039;&#039;&#039; 255 characters&lt;br /&gt;
* &#039;&#039;&#039;Region name length:&#039;&#039;&#039; Under Linden Concierge policy, minimum of 3 characters, and a maximum of 25 characters (including spaces). See [[Linden Lab Official:Guidelines for Private Region Naming|Guidelines for Private Region Naming]].&lt;br /&gt;
** Rare exceptions exist, like [http://slurl.com/secondlife/Q/128/128/24 Q].&lt;br /&gt;
* &#039;&#039;&#039;Maximum &amp;quot;NO ENTRY&amp;quot; ban line height:&#039;&#039;&#039; is for all options 80 meter. Only the option &#039;Banned Residents&#039; (named) has a 5020 meter ban line high, which is visible up to a high of 800 meter above the terrain mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum prims in a [[Land#Region|region]]:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 15,000&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 3,750&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 750&lt;br /&gt;
* &#039;&#039;&#039;Maximum auto return value&#039;&#039;&#039;: Besides &amp;quot;0&amp;quot; (which means &#039;&#039;never&#039;&#039;), {{HoverText|999,999|Almost 23 months}} minutes is the highest auto return value.&lt;br /&gt;
* &#039;&#039;&#039;Terraforming limits:&#039;&#039;&#039;&lt;br /&gt;
** Most mainland can be raised/lowered by 4 meters (+/-).&lt;br /&gt;
** Some mainland cannot be terraformed, including: Bay City Regions, Blumfield, Boardman, Brown, De Haro, Nautilus City Regions, Nova Albion Regions, Shermerville Regions, and West Haven.&lt;br /&gt;
** A few, very old mainland Regions like Da Boom have a terraform range of 40 meters (+/-).&lt;br /&gt;
** Estate (private island) terraformability is settable to a maximum of 100 meters (+/-) by the estate owner or managers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum water height:&#039;&#039;&#039; 100 meters using inworld controls (mainland limit), 255 meters by using a *.raw file upload.&lt;br /&gt;
** Region water height is usually 20 meters, and adjacent regions should have the same water height, or else they will look discontinuous.&lt;br /&gt;
* &#039;&#039;&#039;Maximum terrain height:&#039;&#039;&#039; 255 meters using inworld controls (mainland limit), 510 meters by using a *.raw file upload.&lt;br /&gt;
* &#039;&#039;&#039;Miscellaneous estate limits:&#039;&#039;&#039; You can have a maximum of 10 estate managers, 500 allowed Residents, 63 allowed groups, and 500 banned Residents.&lt;br /&gt;
** See World menu &amp;gt; Region/Estate &amp;gt; Estate tab.&lt;br /&gt;
* &#039;&#039;&#039;Mainland maximum number of agents&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100 (Historically set to 40 by LL but this does vary. Some meeting areas have this set to 60 and higher.)&lt;br /&gt;
*** Recent server performance improvements make regions with 60 agents in them perform quite well excepting the issue described in {{JIRA|SVC-3895}}.&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Island maximum number of agents:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Freeze Time:&#039;&#039;&#039; Land owners can [[freeze]] other Residents for up to 30 seconds.  Members of land owning groups can also be granted this ability.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Places or All search:&#039;&#039;&#039; 144 meters² &amp;lt;!-- 128 and under are disabled --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Events:&#039;&#039;&#039; 512 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum altitude for event listings:&#039;&#039;&#039;  768 meters ({{JIRA|WEB-814}})&lt;br /&gt;
* &#039;&#039;&#039;Maximum heights that objects can be seen on the [[World Map]]:&#039;&#039;&#039; 400.005m&lt;br /&gt;
* &#039;&#039;&#039;[[Classic clouds]] layer:&#039;&#039;&#039; Approximately 150-225 meters, although the edges of particles can appear to exceed that.&lt;br /&gt;
&lt;br /&gt;
== [[Mesh]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Vertices:&#039;&#039;&#039; 65536 vertices per LOD for each Mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum COLLADA File Size:&#039;&#039;&#039; The maximum mesh asset size after compression is 8MB, roughly equivalent to a 256MB raw COLLADA file.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Bone Influence Weights Per Vertex:&#039;&#039;&#039; 4&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Mesh:&#039;&#039;&#039; 8&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Face:&#039;&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;[https://secondlife.com/currency/describe-limits.php Billing and Trading Limits]&#039;&#039;&#039; - Includes [https://secondlife.com/whatis/economy-market.php LindeX] currency exchange limits.&lt;br /&gt;
*&#039;&#039;&#039;Contacts in Communication &amp;gt; Friends tab &#039;&#039;&#039; - A maximum of 20 simultaneous contacts can be selected to change permissions, remove, or invite for a conference chat.&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Max Alt.jpg|thumb|right|435px|&#039;&#039;&#039;Height counter error above 2147483647 meters&#039;&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;&#039;Absolute height limit:&#039;&#039;&#039; [http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing 2147483647]&amp;amp;nbsp;=&amp;amp;nbsp;2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;&amp;amp;nbsp;−&amp;amp;nbsp;1 meters, which causes the altitude counter to roll over. Altitudes well below this cause graphics errors probably due to limited floating point number precision.&lt;br /&gt;
* &#039;&#039;&#039;Highest z-value of an [[SLurl]], that will still teleport you to a positive altitude:&#039;&#039;&#039; 2147483583&lt;br /&gt;
** This is lower than the &#039;&#039;Absolute height limit&#039;&#039; above probably because of precision issues. Any value higher than 2147483583 would be rounded up to something beyond 2147483647 and thus cause an [http://en.wikipedia.org/wiki/Arithmetic_overflow overflow], while 2147483583 will still be rounded down to 2147483520 (see below).&lt;br /&gt;
* &#039;&#039;&#039;Highest altitude you can teleport to with an SLurl:&#039;&#039;&#039; 2147483520 meters&lt;br /&gt;
&lt;br /&gt;
== [[Profile]] ==&lt;br /&gt;
&lt;br /&gt;
Each 7-bit ASCII character is encoded in one byte. International characters might need more bytes. When pasting text instead of typing, you can get in one byte more into each of the below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;2nd Life tab&#039;s About field&#039;&#039;&#039; - 510 bytes&lt;br /&gt;
* &#039;&#039;&#039;Picks tab&#039;&#039;&#039; - 10 picks with 1022 bytes each&lt;br /&gt;
* &#039;&#039;&#039;1st Life tab&#039;s Info field&#039;&#039;&#039; - 253 bytes&lt;br /&gt;
* &#039;&#039;&#039;Classified tab&#039;&#039;&#039; - 100 listings with x bytes each&lt;br /&gt;
* &#039;&#039;&#039;My Notes&#039;&#039;&#039; - 1022 bytes&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Healthy Viewer FPS&#039;&#039;&#039; - Generally, FPS above 15 is good. The higher it gets, the smoother. You can check via Help menu &amp;gt; Lag Meter, or for more advanced usage, see View menu &amp;gt; Statistics Bar.&lt;br /&gt;
* &#039;&#039;&#039;Avatar Rendering Cost scores&#039;&#039;&#039; - [[Avatar Rendering Cost|Learn all about it!]]&lt;br /&gt;
&lt;br /&gt;
== [[Scripting]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Height at which scripts reactivate on a no-script parcel&#039;&#039;&#039; - 50 m above terrain mesh. Scripted objects that take controls continue to remain active when you fly down or enter a no-script parcel.&lt;br /&gt;
* &#039;&#039;&#039;Maximum height where scripts can run&#039;&#039;&#039; - none, as long as the object remains rezzed or attached.&lt;br /&gt;
* &#039;&#039;&#039;Maximum script source code size&#039;&#039;&#039; - 65536 single byte characters.&lt;br /&gt;
* For specific scripting limits, lookup calls in the &#039;&#039;&#039;[[LSL Portal]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== [[Sound]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Sound Length:&#039;&#039;&#039; 10 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Textures]] ==&lt;br /&gt;
* &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Aspect_ratio Aspect ratios]&#039;&#039;&#039; of profile, place, etc. pictures — all of these were measured at UI size (Edit menu &amp;gt; Preferences &amp;gt; General tab &amp;gt; UI Size) = 1.000:&lt;br /&gt;
&lt;br /&gt;
=== 1.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
(official Viewer up to 1.23.5, most [[Alternate viewers|Third Party Viewers]])&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; All for &amp;quot;Classifieds&amp;quot;, &amp;quot;People&amp;quot;, and &amp;quot;Places&amp;quot;&#039;&#039;&#039; - 4:3 (256&amp;amp;times;192 pi&amp;amp;times;els)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Places and Classified tabs&#039;&#039;&#039; - ~7:5 (398&amp;amp;times;282 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Land tab&#039;&#039;&#039; - ~7:5 (358&amp;amp;times;252 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~4:3 (178&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks tab&#039;&#039;&#039; - 16:9 (288&amp;amp;times;162 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 1st Life tab&#039;&#039;&#039; - 1:1 (133&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Classifieds tab&#039;&#039;&#039; - ~3:2 (206&amp;amp;times;137 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Web tab&#039;&#039;&#039; - 1:1 (400&amp;amp;times;400 pixels)&lt;br /&gt;
** A scrollbar uses 15 pixels on the right-hand side.&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~3:2 (178&amp;amp;times;117 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Group Information &amp;gt; General tab&#039;s &amp;quot;Group Insignia&amp;quot;&#039;&#039;&#039; - 1:1 (126&amp;amp;times;126 pixels)&lt;br /&gt;
** Some of these textures are shared (for example, Search &amp;gt; All place pages, Search &amp;gt; Places, and About Land &amp;gt; Options use the same image), so you should pick a well-balanced ratio and size.&lt;br /&gt;
** [[Texture_aspect_ratios|Learn how to get correct texture aspect ratios when editing images.]]&lt;br /&gt;
&lt;br /&gt;
=== 2.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds thumbnail&#039;&#039;&#039; - 4:3 (60&amp;amp;times;45 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded&#039;&#039;&#039; - ~4:3 (252&amp;amp;times;188 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded &amp;gt; Details&#039;&#039;&#039; - 17:7 (272&amp;amp;times;112 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; People&#039;&#039;&#039; - 4:3 (188&amp;amp;times;141 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide thumbnail&#039;&#039;&#039; - ~4:3 (45&amp;amp;times;34 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide expanded&#039;&#039;&#039; - 5:3 (250&amp;amp;times;150 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~1:1 (100&amp;amp;times;99 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks thumbnail&#039;&#039;&#039; - 8:5 (88&amp;amp;times;55 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Pick expanded&#039;&#039;&#039; - ~5:3 (285&amp;amp;times;172 pixels)&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~20:13 (193&amp;amp;times;125 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Places &amp;gt; More information&#039;&#039;&#039; - ~11:7 (272&amp;amp;times;173 pixels)&lt;br /&gt;
&lt;br /&gt;
=== All Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum texture size&#039;&#039;&#039; - 1024&amp;amp;times;1024 pixels&lt;br /&gt;
** All Second Life textures are constrained to [http://en.wikipedia.org/wiki/Power_of_2 powers of 2] (e.g., 128, 256, 512).&lt;br /&gt;
** Some textures inworld have a resolution as high as 2048&amp;amp;times;2048; this is due to a previous limit that was higher.&lt;br /&gt;
** We strongly recommend you use as small textures as possible because larger ones consume more memory and take substantially longer to load.&lt;br /&gt;
** Where large textures are being forced by import to only 512&amp;amp;times;512, lower your ...&amp;gt; Preferences &amp;gt;...&amp;gt; UI Size under 1.0, to increase import size to the max 1024&amp;amp;times;1024.&lt;br /&gt;
&lt;br /&gt;
[[Category:Creation]] [[Category:Tutorials]] [[Category:Lists]]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
In general 1 byte is enough to contain one character.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174068</id>
		<title>Limits</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1174068"/>
		<updated>2012-11-01T12:43:47Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{KBmaster}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Summary ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
The Second Life Viewer and simulators have a division of labor, keeping track of the data that makes Second Life run. The Viewer&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Handle locations of objects.&lt;br /&gt;
* Get velocities and other physics information, and does simple physics to keep track of what is moving where.&lt;br /&gt;
&lt;br /&gt;
The simulator&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Run the physics engine.&lt;br /&gt;
* Detect collisions.&lt;br /&gt;
* Keep track of where everything is&lt;br /&gt;
* Send locations of content to the Viewer along with updates when certain changes occur.&lt;br /&gt;
&lt;br /&gt;
Limits are necessary for all of these components to work together. The list below outlines many of the &#039;&#039;&#039;Second Life numerical limits that affect your inworld experience&#039;&#039;&#039;. Some of these will likely change over time, so if you spot something incorrect/outdated, please take a moment to update it.&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|1=The scope of this page is focused on Linden Lab&#039;s official Viewers, keeping in mind [[Third_Party_Viewer_Directory|3rd-party viewers may differ]]. Cite sources and provide substantiation for limits that aren&#039;t provided by Linden Lab. Also, unconfirmed speculation [[Talk:Limits|goes on this discussion page]]. Don&#039;t add data without a hard limit, and don&#039;t add obscure trivia that doesn&#039;t practically affect the general inworld experience.|width=80%}}&lt;br /&gt;
&lt;br /&gt;
== [[Avatar]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. # of attachments&#039;&#039;&#039; - 38 combined [[HUD]] or body attachments.&lt;br /&gt;
** They can be viewed by right-clicking your avatar and choosing &#039;&#039;&#039;Take Off&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;HUD&#039;&#039;&#039; or &#039;&#039;&#039;Detach&#039;&#039;&#039;.&lt;br /&gt;
** With the formal introduction of [[multiple attachments|multiple attachments to a single point]] in Viewer 2.4, you can attach up to 38 total objects, and they can all be attached to a single point. &lt;br /&gt;
* &#039;&#039;&#039;Max. # of clothing layers per slot&#039;&#039;&#039; - 5 (this includes alpha and Tattoo Layers)&lt;br /&gt;
* &#039;&#039;&#039;Max. unassisted fly height&#039;&#039;&#039; - Stable hover at 4096m.&lt;br /&gt;
** You can easily acquire a flight attachment to fly high. Also see [[flight limit]] and [[Limits#Navigation|the Navigation section]] below.&lt;br /&gt;
* &#039;&#039;&#039;Common shoe sizes&#039;&#039;&#039; - Most women&#039;s shoes are designed for a size 0 (zero) foot. Men&#039;s generally scale up to 14.&lt;br /&gt;
** You can check this by going to Edit menu &amp;gt; Appearance and clicking on the Shape &amp;gt; Legs tab.&lt;br /&gt;
&amp;lt;!--Can someone verify the following?&lt;br /&gt;
* &#039;&#039;&#039;Min. length of avatar name&#039;&#039;&#039; - 2 for first name, 2 for last name, 5 in total (including the space).--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Max. length of avatar name&#039;&#039;&#039; - 31 for first name, 31 for last name, 63 in total (including the space).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of {{LSLGC|Username}}&#039;&#039;&#039; - All lower case and a maximum of 63 including the &#039;.&#039;(eg; firstname.lastname)&lt;br /&gt;
**Older account user names are a combination of the First and last name in lower case separated by a period(.)(eg; lilmix.pixelmaid)&lt;br /&gt;
**Modern user names are a single name(no period)(eg; john1234) - &#039;&#039;&#039;Max.&#039;&#039;&#039; length is 31 characters&lt;br /&gt;
**The {{LSLGC|Legacy Name}}s for modern user names always shows Resident as the last name. So the Max is 40 characters in total for a new avatar&#039;s legacy name(including the space and last name &#039;Resident&#039;)&lt;br /&gt;
*&#039;&#039;&#039;Min. length of [[Display_Names]]&#039;&#039;&#039; - At least one script character&lt;br /&gt;
*&#039;&#039;&#039;Max. length of Display Names&#039;&#039;&#039; - 31 characters&lt;br /&gt;
**Display Names can include most Unicode script characters, spaces, and some punctuation.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. avatar speed&#039;&#039;&#039; - 250m/s (with only attachments to assist)&lt;br /&gt;
* &#039;&#039;&#039;Max. teleport speed&#039;&#039;&#039;&amp;lt;!-- - 3 teleports per 15 seconds (server 1.27.0) and 10 teleports per 15 seconds (server 1.27.1)--&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.1&#039;&#039;&#039; - 10 teleports per 15 seconds&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.0&#039;&#039;&#039; - 3 teleports per 15 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Animation]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of animation:&#039;&#039;&#039; 30.0 seconds&lt;br /&gt;
* &#039;&#039;&#039;Min. animation priority:&#039;&#039;&#039; 0&lt;br /&gt;
* &#039;&#039;&#039;Max. animation priority:&#039;&#039;&#039; 4 (5 with custom tools)&lt;br /&gt;
* &#039;&#039;&#039;Max. unique joints per animation:&#039;&#039;&#039; 32&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. [[prim]] dimensions (non-[[megaprim]])&#039;&#039;&#039; - 64&amp;amp;times;64&amp;amp;times;64m&lt;br /&gt;
** it was 10&amp;amp;times;10&amp;amp;times;10m before Second Life Server 11.08.17.238770 &lt;br /&gt;
* &#039;&#039;&#039;Min. prim dimensions&#039;&#039;&#039; - 0.01&amp;amp;times;0.01&amp;amp;times;0.01m&lt;br /&gt;
* &#039;&#039;&#039;Max. # of prims in a linkset&#039;&#039;&#039; - 256 &lt;br /&gt;
** It was 255 before SL Server 1.26.&lt;br /&gt;
** with the addition of Mesh, LI is not a factor, So a max of 256 0.5 LI objects can be linked for a max LI of 128 in that case.&lt;br /&gt;
* &#039;&#039;&#039;Max. link distance&#039;&#039;&#039; - See [[Linkability Rules]].&lt;br /&gt;
* &#039;&#039;&#039;Max. physics weight for an object to be set physical&#039;&#039;&#039; - 32.0&lt;br /&gt;
** If you try to link more, it&#039;ll either say &amp;quot;Can&#039;t enable physics for objects with more than 32 primitives&amp;quot; or &amp;quot;Object has too many primitives -- its dynamics have been disabled.&amp;quot;.&lt;br /&gt;
** On server versions 1.38 and below, each sitting avatar counted as 1 prim. From 1.40.2 the limit is only on actual prims.&lt;br /&gt;
* &#039;&#039;&#039;Max. build or rez height&#039;&#039;&#039; - 4,096m&lt;br /&gt;
** This is 768m for Viewers prior to SL 1.20&lt;br /&gt;
* &#039;&#039;&#039;Max. prim name length&#039;&#039;&#039; - 63 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: This is the same total character limit as avatar names.&lt;br /&gt;
* &#039;&#039;&#039;Max. prim description length&#039;&#039;&#039; - 127 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: &lt;br /&gt;
* &#039;&#039;&#039;Temporary prim lifetime&#039;&#039;&#039; - around 60 seconds&lt;br /&gt;
* &#039;&#039;&#039;Max. number of temporary prims&#039;&#039;&#039; - regular_prim_limit - current_regular_prims + minimum(0.5 * regular_prim_limit + 400, 1000)&lt;br /&gt;
** From [http://forums-archive.secondlife.com/8/cd/305651/1.html Andrew Linden&#039;s February 2009 discussion])&lt;br /&gt;
* &#039;&#039;&#039;Max. length of hovertext (via [[llSetText]] or [[PRIM_TEXT]])&#039;&#039;&#039; - 254 bytes UTF-8 [[string]]&lt;br /&gt;
&lt;br /&gt;
== Chat (text) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Whisper distance&#039;&#039;&#039; - 10 m&lt;br /&gt;
* &#039;&#039;&#039;Chat distance&#039;&#039;&#039; - 20 m&lt;br /&gt;
* &#039;&#039;&#039;Shout distance&#039;&#039;&#039; - 100 m&lt;br /&gt;
** &#039;&#039;Rule of thumb:&#039;&#039; when you&#039;re at default zoom (&#039;&#039;&#039;View&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reset View&#039;&#039;&#039;), if you can see another person&#039;s nametag, they can see your chat. If they&#039;re far enough away that you don&#039;t see a nametag, they won&#039;t &amp;quot;hear&amp;quot; you unless you shout.&lt;br /&gt;
** Text spoken as a &amp;quot;Chat&amp;quot; step in a gesture cannot be shouted or whispered&lt;br /&gt;
** Text spoken as &amp;quot;Replace with&amp;quot; text in a gesture can be whispered or shouted in Viewer 2 either by putting &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the start of the &amp;quot;Replace with&amp;quot; text or by typing &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the beginning of the nearby chat input bar, followed by the gesture&#039;s trigger text. (Though, if you do both, or if a gesture with built-in &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; is used mid-sentence, the &amp;quot;/whisper&amp;quot; or &amp;quot;/shout&amp;quot; will appear literally.) Viewer 1 does not honor &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; and will always send them literally.&lt;br /&gt;
* &#039;&#039;&#039;Max. length of a chat message&#039;&#039;&#039; - 1024 bytes/single-byte characters&lt;br /&gt;
* As of 8/13/2012 Instant Messages sent via llInstantMessage() can send a maximum of 1180 single byte characters.&lt;br /&gt;
** The same holds true for an IM &amp;lt;-&amp;gt; email replies.&lt;br /&gt;
*** When the receiver is offline, if they set an IM to Email feature (&#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Preferences&#039;&#039;&#039; (or press {{K|Ctrl|P}}), go to the &#039;&#039;&#039;Communication&#039;&#039;&#039; tab and check the &#039;&#039;&#039;Send IM to Email&#039;&#039;&#039; checkbox), it will send offline messages directly to the mailbox connected to your account. When an offline message is received via Email, this message can also be answered via Email again. The length of properly delivered Email replies is limited to 1023 bytes/single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Capped&#039;&#039;&#039; - Maximum number of offline messages (involving [[IM]]s, inventory offers, group notices and group invitations) received before messages get capped is 25.&lt;br /&gt;
** Senders can&#039;t know whether their messages were capped or not.&lt;br /&gt;
* &#039;&#039;&#039;Email -&amp;gt; IM&#039;&#039;&#039; replies can be sent up to 5 days after receiving the offline IM the email is meant to answer.&amp;lt;sup&amp;gt;[&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://blogs.secondlife.com/community/features/blog/2007/02/06/im-to-e-mail-return-addresses-changing blog]&amp;lt;/span&amp;gt;]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;IMs&#039;&#039;&#039; are retained on Linden Lab&#039;s servers for up to 31 days before being discarded. For example, if someone sends you an Instant Message and the next time you login is 33 days later, you won&#039;t get it.&lt;br /&gt;
** Torley confirmed this with Kelly Linden.&lt;br /&gt;
* The number of &#039;&#039;&#039;IMs&#039;&#039;&#039; an object can send in one hour is 5000.&lt;br /&gt;
&lt;br /&gt;
== [[Gesture]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shortcut key mapping:&#039;&#039;&#039; 33 unique combinations, since {{K|F2}}&amp;amp;ndash;{{K|F12}} can be used with the {{K|Ctrl}} or {{K|Shift}} modifiers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Chat step length:&#039;&#039;&#039; 127 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Wait time:&#039;&#039;&#039; 3600 seconds (one hour).&lt;br /&gt;
&lt;br /&gt;
== [[Group]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of groups you can belong to:&#039;&#039;&#039; 42&lt;br /&gt;
** Roles within groups are sort of like sub-groups. In many cases, you can use them instead of creating new groups.&lt;br /&gt;
* &#039;&#039;&#039;Minimum number of members in a group:&#039;&#039;&#039; 2&lt;br /&gt;
** A group with only 1 person for 48 hours will be disbanded (cancelled). Unless the group owns land.&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of roles allowed in a group:&#039;&#039;&#039; 10 (including &amp;quot;Owners&amp;quot; and &amp;quot;Everyone&amp;quot;, which cannot be deleted)&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Name:&#039;&#039;&#039; 35 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Title:&#039;&#039;&#039; 20 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Length of a Group Notice:&#039;&#039;&#039; 512 single-byte characters.&lt;br /&gt;
&lt;br /&gt;
== [[Inventory]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of inventory items that can be sent in a folder:&#039;&#039;&#039; 42&lt;br /&gt;
** Folders count as items too. This has more to do with packet size limits than cheeky Douglas Adams references.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard line:&#039;&#039;&#039; None, but scripts can only read the first 255 bytes.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard size:&#039;&#039;&#039; 65,536 bytes&lt;br /&gt;
* &#039;&#039;&#039;Number of items in the Library:&#039;&#039;&#039; 1,248 as of 2010-06-17&lt;br /&gt;
** Verified by [[How_does_the_Library_work|hiding the Library]] and counting the difference.&lt;br /&gt;
&lt;br /&gt;
== [[Land]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum [[Land#Parcel|parcel]] size:&#039;&#039;&#039; 65,536 meters²&lt;br /&gt;
** Covering a whole region, or square on the World Map.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel size:&#039;&#039;&#039; 16 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel name length:&#039;&#039;&#039; 63 single-byte characters&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel description length:&#039;&#039;&#039; 255 characters&lt;br /&gt;
* &#039;&#039;&#039;Region name length:&#039;&#039;&#039; Under Linden Concierge policy, minimum of 3 characters, and a maximum of 25 characters (including spaces). See [[Linden Lab Official:Guidelines for Private Region Naming|Guidelines for Private Region Naming]].&lt;br /&gt;
** Rare exceptions exist, like [http://slurl.com/secondlife/Q/128/128/24 Q].&lt;br /&gt;
* &#039;&#039;&#039;Maximum &amp;quot;NO ENTRY&amp;quot; ban line height:&#039;&#039;&#039; is for all options 80 meter. Only the option &#039;Banned Residents&#039; (named) has a 5020 meter ban line high, which is visible up to a high of 800 meter above the terrain mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum prims in a [[Land#Region|region]]:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 15,000&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 3,750&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 750&lt;br /&gt;
* &#039;&#039;&#039;Maximum auto return value&#039;&#039;&#039;: Besides &amp;quot;0&amp;quot; (which means &#039;&#039;never&#039;&#039;), {{HoverText|999,999|Almost 23 months}} minutes is the highest auto return value.&lt;br /&gt;
* &#039;&#039;&#039;Terraforming limits:&#039;&#039;&#039;&lt;br /&gt;
** Most mainland can be raised/lowered by 4 meters (+/-).&lt;br /&gt;
** Some mainland cannot be terraformed, including: Bay City Regions, Blumfield, Boardman, Brown, De Haro, Nautilus City Regions, Nova Albion Regions, Shermerville Regions, and West Haven.&lt;br /&gt;
** A few, very old mainland Regions like Da Boom have a terraform range of 40 meters (+/-).&lt;br /&gt;
** Estate (private island) terraformability is settable to a maximum of 100 meters (+/-) by the estate owner or managers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum water height:&#039;&#039;&#039; 100 meters using inworld controls (mainland limit), 255 meters by using a *.raw file upload.&lt;br /&gt;
** Region water height is usually 20 meters, and adjacent regions should have the same water height, or else they will look discontinuous.&lt;br /&gt;
* &#039;&#039;&#039;Maximum terrain height:&#039;&#039;&#039; 255 meters using inworld controls (mainland limit), 510 meters by using a *.raw file upload.&lt;br /&gt;
* &#039;&#039;&#039;Miscellaneous estate limits:&#039;&#039;&#039; You can have a maximum of 10 estate managers, 500 allowed Residents, 63 allowed groups, and 500 banned Residents.&lt;br /&gt;
** See World menu &amp;gt; Region/Estate &amp;gt; Estate tab.&lt;br /&gt;
* &#039;&#039;&#039;Mainland maximum number of agents&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100 (Historically set to 40 by LL but this does vary. Some meeting areas have this set to 60 and higher.)&lt;br /&gt;
*** Recent server performance improvements make regions with 60 agents in them perform quite well excepting the issue described in {{JIRA|SVC-3895}}.&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Island maximum number of agents:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Freeze Time:&#039;&#039;&#039; Land owners can [[freeze]] other Residents for up to 30 seconds.  Members of land owning groups can also be granted this ability.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Places or All search:&#039;&#039;&#039; 144 meters² &amp;lt;!-- 128 and under are disabled --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Events:&#039;&#039;&#039; 512 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum altitude for event listings:&#039;&#039;&#039;  768 meters ({{JIRA|WEB-814}})&lt;br /&gt;
* &#039;&#039;&#039;Maximum heights that objects can be seen on the [[World Map]]:&#039;&#039;&#039; 400.005m&lt;br /&gt;
* &#039;&#039;&#039;[[Classic clouds]] layer:&#039;&#039;&#039; Approximately 150-225 meters, although the edges of particles can appear to exceed that.&lt;br /&gt;
&lt;br /&gt;
== [[Mesh]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Vertices:&#039;&#039;&#039; 65536 vertices per LOD for each Mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum COLLADA File Size:&#039;&#039;&#039; The maximum mesh asset size after compression is 8MB, roughly equivalent to a 256MB raw COLLADA file.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Bone Influence Weights Per Vertex:&#039;&#039;&#039; 4&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Mesh:&#039;&#039;&#039; 8&lt;br /&gt;
* &#039;&#039;&#039;Maximum Materials per Face:&#039;&#039;&#039; 1&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;[https://secondlife.com/currency/describe-limits.php Billing and Trading Limits]&#039;&#039;&#039; - Includes [https://secondlife.com/whatis/economy-market.php LindeX] currency exchange limits.&lt;br /&gt;
*&#039;&#039;&#039;Contacts in Communication &amp;gt; Friends tab &#039;&#039;&#039; - A maximum of 20 simultaneous contacts can be selected to change permissions, remove, or invite for a conference chat.&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Max Alt.jpg|thumb|right|435px|&#039;&#039;&#039;Height counter error above 2147483647 meters&#039;&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;&#039;Absolute height limit:&#039;&#039;&#039; [http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing 2147483647]&amp;amp;nbsp;=&amp;amp;nbsp;2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;&amp;amp;nbsp;−&amp;amp;nbsp;1 meters, which causes the altitude counter to roll over. Altitudes well below this cause graphics errors probably due to limited floating point number precision.&lt;br /&gt;
* &#039;&#039;&#039;Highest z-value of an [[SLurl]], that will still teleport you to a positive altitude:&#039;&#039;&#039; 2147483583&lt;br /&gt;
** This is lower than the &#039;&#039;Absolute height limit&#039;&#039; above probably because of precision issues. Any value higher than 2147483583 would be rounded up to something beyond 2147483647 and thus cause an [http://en.wikipedia.org/wiki/Arithmetic_overflow overflow], while 2147483583 will still be rounded down to 2147483520 (see below).&lt;br /&gt;
* &#039;&#039;&#039;Highest altitude you can teleport to with an SLurl:&#039;&#039;&#039; 2147483520 meters&lt;br /&gt;
&lt;br /&gt;
== [[Profile]] ==&lt;br /&gt;
&lt;br /&gt;
Each 7-bit ASCII character is encoded in one byte. International characters might need more bytes. When pasting text instead of typing, you can get in one byte more into each of the below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;2nd Life tab&#039;s About field&#039;&#039;&#039; - 510 bytes&lt;br /&gt;
* &#039;&#039;&#039;Picks tab&#039;&#039;&#039; - 10 picks with 1022 bytes each&lt;br /&gt;
* &#039;&#039;&#039;1st Life tab&#039;s Info field&#039;&#039;&#039; - 253 bytes&lt;br /&gt;
* &#039;&#039;&#039;Classified tab&#039;&#039;&#039; - 100 listings with x bytes each&lt;br /&gt;
* &#039;&#039;&#039;My Notes&#039;&#039;&#039; - 1022 bytes&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Healthy Viewer FPS&#039;&#039;&#039; - Generally, FPS above 15 is good. The higher it gets, the smoother. You can check via Help menu &amp;gt; Lag Meter, or for more advanced usage, see View menu &amp;gt; Statistics Bar.&lt;br /&gt;
* &#039;&#039;&#039;Avatar Rendering Cost scores&#039;&#039;&#039; - [[Avatar Rendering Cost|Learn all about it!]]&lt;br /&gt;
&lt;br /&gt;
== [[Scripting]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Height at which scripts reactivate on a no-script parcel&#039;&#039;&#039; - 50 m above terrain mesh. Scripted objects that take controls continue to remain active when you fly down or enter a no-script parcel.&lt;br /&gt;
* &#039;&#039;&#039;Maximum height where scripts can run&#039;&#039;&#039; - none, as long as the object remains rezzed or attached.&lt;br /&gt;
* &#039;&#039;&#039;Maximum script source code size&#039;&#039;&#039; - 65536 single byte characters.&lt;br /&gt;
* For specific scripting limits, lookup calls in the &#039;&#039;&#039;[[LSL Portal]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== [[Sound]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum Sound Length:&#039;&#039;&#039; 10 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Textures]] ==&lt;br /&gt;
* &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Aspect_ratio Aspect ratios]&#039;&#039;&#039; of profile, place, etc. pictures — all of these were measured at UI size (Edit menu &amp;gt; Preferences &amp;gt; General tab &amp;gt; UI Size) = 1.000:&lt;br /&gt;
&lt;br /&gt;
=== 1.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
(official Viewer up to 1.23.5, most [[Alternate viewers|Third Party Viewers]])&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; All for &amp;quot;Classifieds&amp;quot;, &amp;quot;People&amp;quot;, and &amp;quot;Places&amp;quot;&#039;&#039;&#039; - 4:3 (256&amp;amp;times;192 pi&amp;amp;times;els)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Places and Classified tabs&#039;&#039;&#039; - ~7:5 (398&amp;amp;times;282 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Land tab&#039;&#039;&#039; - ~7:5 (358&amp;amp;times;252 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~4:3 (178&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks tab&#039;&#039;&#039; - 16:9 (288&amp;amp;times;162 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 1st Life tab&#039;&#039;&#039; - 1:1 (133&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Classifieds tab&#039;&#039;&#039; - ~3:2 (206&amp;amp;times;137 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Web tab&#039;&#039;&#039; - 1:1 (400&amp;amp;times;400 pixels)&lt;br /&gt;
** A scrollbar uses 15 pixels on the right-hand side.&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~3:2 (178&amp;amp;times;117 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Group Information &amp;gt; General tab&#039;s &amp;quot;Group Insignia&amp;quot;&#039;&#039;&#039; - 1:1 (126&amp;amp;times;126 pixels)&lt;br /&gt;
** Some of these textures are shared (for example, Search &amp;gt; All place pages, Search &amp;gt; Places, and About Land &amp;gt; Options use the same image), so you should pick a well-balanced ratio and size.&lt;br /&gt;
** [[Texture_aspect_ratios|Learn how to get correct texture aspect ratios when editing images.]]&lt;br /&gt;
&lt;br /&gt;
=== 2.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds thumbnail&#039;&#039;&#039; - 4:3 (60&amp;amp;times;45 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded&#039;&#039;&#039; - ~4:3 (252&amp;amp;times;188 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded &amp;gt; Details&#039;&#039;&#039; - 17:7 (272&amp;amp;times;112 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; People&#039;&#039;&#039; - 4:3 (188&amp;amp;times;141 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide thumbnail&#039;&#039;&#039; - ~4:3 (45&amp;amp;times;34 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide expanded&#039;&#039;&#039; - 5:3 (250&amp;amp;times;150 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~1:1 (100&amp;amp;times;99 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks thumbnail&#039;&#039;&#039; - 8:5 (88&amp;amp;times;55 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Pick expanded&#039;&#039;&#039; - ~5:3 (285&amp;amp;times;172 pixels)&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~20:13 (193&amp;amp;times;125 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Places &amp;gt; More information&#039;&#039;&#039; - ~11:7 (272&amp;amp;times;173 pixels)&lt;br /&gt;
&lt;br /&gt;
=== All Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum texture size&#039;&#039;&#039; - 1024&amp;amp;times;1024 pixels&lt;br /&gt;
** All Second Life textures are constrained to [http://en.wikipedia.org/wiki/Power_of_2 powers of 2] (e.g., 128, 256, 512).&lt;br /&gt;
** Some textures inworld have a resolution as high as 2048&amp;amp;times;2048; this is due to a previous limit that was higher.&lt;br /&gt;
** We strongly recommend you use as small textures as possible because larger ones consume more memory and take substantially longer to load.&lt;br /&gt;
** Where large textures are being forced by import to only 512&amp;amp;times;512, lower your ...&amp;gt; Preferences &amp;gt;...&amp;gt; UI Size under 1.0, to increase import size to the max 1024&amp;amp;times;1024.&lt;br /&gt;
&lt;br /&gt;
[[Category:Creation]] [[Category:Tutorials]] [[Category:Lists]]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
In general 1 byte is enough to contain one character.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Path_update&amp;diff=1172498</id>
		<title>Path update</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Path_update&amp;diff=1172498"/>
		<updated>2012-09-06T23:17:32Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Removed &amp;quot;RC only&amp;quot; notice. On main channel.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pathfinding]]{{LSL_Event&lt;br /&gt;
|event=path_update&lt;br /&gt;
|event_desc=Event description goes here.&lt;br /&gt;
|p1_type=integer|p1_name=type&lt;br /&gt;
|p1_desc=A &amp;lt;code&amp;gt;PU_*&amp;lt;/code&amp;gt;, it&#039;s the path event type&lt;br /&gt;
|p1_hover=A PU_* flag, it&#039;s the path event type&lt;br /&gt;
|p2_type=list|p2_name=reserved&lt;br /&gt;
|p2_desc=Reserved; not currently used.&lt;br /&gt;
|constants={{LSL_Constants/path_update}}&lt;br /&gt;
|caveats=&lt;br /&gt;
* Note that if wandering, the &amp;quot;stop&amp;quot; (&amp;lt;code&amp;gt;{{LSL Const|PU_GOAL_REACHED|hex=0x01|ihex=1}}&amp;lt;/code&amp;gt;) type may never occur as a new goal may be chosen when near (&amp;lt;code&amp;gt;{{LSL Const|PU_SLOWDOWN_DISTANCE_REACHED|hex=0x00|ihex=0}}&amp;lt;/code&amp;gt;) the previous goal.&lt;br /&gt;
* When the character cannot navigate from the current position (&amp;lt;code&amp;gt;{{LSL Const|PU_FAILURE_INVALID_START|hex=0x02|ihex=2}}&amp;lt;/code&amp;gt;) [[llNavigateTo]] with the &amp;lt;code&amp;gt;{{LSL Const|FORCE_DIRECT_PATH|value=1}}&amp;lt;/code&amp;gt; option may be helpful.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llDeleteCharacter(); // Clear any previous character behaviors&lt;br /&gt;
        llCreateCharacter([CHARACTER_MAX_SPEED, 25, CHARACTER_DESIRED_SPEED, 15.0]);&lt;br /&gt;
        //MAX_SPEED is @ 20 by default&lt;br /&gt;
        &lt;br /&gt;
        llWanderWithin(llGetPos(), &amp;lt;10.0, 10.0,  10.0&amp;gt;, []);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    path_update(integer type, list reserved)&lt;br /&gt;
    {&lt;br /&gt;
        if (type == 0)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Near&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 1)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Stopping&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 2)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Cannot path find from current location! Attempting to go to the center of the region.&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
            llNavigateTo(&amp;lt;128.0, 128.0, llGround(&amp;lt;128.0, 128.0, 0.0&amp;gt; - llGetPos())&amp;gt;, [FORCE_DIRECT_PATH, TRUE]);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 3)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Goal not on navmesh!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 4)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Goal unreachable!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 5)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Target gone!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 6)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;No place to go!&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 7)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Hiding from pursuer...&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 8)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Switched from hiding to running...&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 9)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Region has no nav mesh..&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 10)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Dynamic pathfinding is disabled in this region.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 11)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Parcel entry problem (is the parcel full?).&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else if (type == 1000000)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Hit an unspecified failure&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Unknown failure&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}		&lt;br /&gt;
&amp;lt;/lsl&amp;gt; &lt;br /&gt;
|also_functions=&lt;br /&gt;
* [[llCreateCharacter]]&lt;br /&gt;
* [[llDeleteCharacter]]&lt;br /&gt;
* [[llEvade]]&lt;br /&gt;
* [[llExecCharacterCmd]]&lt;br /&gt;
* [[llGetClosestNavPoint]]&lt;br /&gt;
* [[llFleeFrom]]&lt;br /&gt;
* [[llNavigateTo]]&lt;br /&gt;
* [[llPatrolPoints]]&lt;br /&gt;
* [[llPursue]]&lt;br /&gt;
* [[llUpdateCharacter]]&lt;br /&gt;
* [[llWanderWithin]]&lt;br /&gt;
|also_events&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Advanced_menu/1.23/1.23&amp;diff=1171582</id>
		<title>Advanced menu/1.23/1.23</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Advanced_menu/1.23/1.23&amp;diff=1171582"/>
		<updated>2012-08-12T03:12:27Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{KBcaution|[http://blogs.secondlife.com/community/community/tnt/blog/2010/12/07/viewer-24-beta-much-easier-to-enable-advanced-menu-and-run-multiple-viewers &#039;&#039;&#039;Viewer 2.4 Beta lets you enable Advanced menu with a checkbox!&#039;&#039;&#039;]}}&lt;br /&gt;
&lt;br /&gt;
{{KBwarning|The &#039;&#039;&#039;Advanced&#039;&#039;&#039; menu and the unique features within it are NOT supported by Linden Lab, because they&#039;re intended for technical debugging. You may find the Advanced menu beneficial and Lindens appreciate Residents documenting its use, but &#039;&#039;&#039;LL does NOT guarantee it to function correctly. USE AT YOUR OWN RISK.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Help|Viewer=*|Glossary=*}}&lt;br /&gt;
{{GettingStartedNav}}&lt;br /&gt;
&lt;br /&gt;
This page is part of the &#039;&#039;Resident-contributed, unofficial&#039;&#039; Second Life User&#039;s Manual, describing how the Viewer software works.  Please see the main [[User&#039;s Manual]] page as a starting point.&lt;br /&gt;
&lt;br /&gt;
==What is this menu for?==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Advanced&#039;&#039;&#039; menu contains more technical settings than the rest of the Second Life Viewer, which is why they&#039;re usually hidden. Some of them are useful, but none of them are essential in order to use any of Second Life&#039;s features. If you&#039;d like to enable the &#039;&#039;&#039;Advanced&#039;&#039;&#039; menu, use the following shortcuts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - {{K|Ctrl|Alt|D}}&lt;br /&gt;
* &#039;&#039;&#039;Mac&#039;&#039;&#039; - {{K|Ctrl|Opt|D}}&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - {{K|Ctrl|Alt|D}}&lt;br /&gt;
&lt;br /&gt;
{{KBnote| In some cases on Windows, there may be a shortcut conflict with another application. In which case, hold down {{K|Ctrl|Alt|Shift|D}}.}}&lt;br /&gt;
&lt;br /&gt;
{{KBnote| In Viewer 2, the Linux binding changed to {{K|Ctrl|Alt|D}}, which may conflict with window manager specific default shortcuts.  In Ubuntu, for example, it&#039;s necessary to change Gnome&#039;s &amp;quot;Keyboard Shortcuts&amp;quot; preference for &amp;quot;Hide all normal windows and set focus to the desktop&amp;quot; in order for the key chord to be passed through to SL.}}&lt;br /&gt;
&lt;br /&gt;
Video of how to do it in Viewer 2:&lt;br /&gt;
&lt;br /&gt;
{{KBvideo|LL4g5Iersq4|640|505|type=youtube}}&lt;br /&gt;
&lt;br /&gt;
Additionally, there are two related menus:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Develop&#039;&#039;&#039; - Choose &#039;&#039;&#039;Advanced&#039;&#039;&#039; menu &amp;gt; &#039;&#039;&#039;Show Develop Menu&#039;&#039;&#039; to enable it. This contains even more technical features for [[Snowstorm|Viewer developers]]. Some features are casually useful, however. (For example, if you find &amp;quot;{{xref|facelight|facelights}}&amp;quot; annoying, disable &#039;&#039;&#039;Develop&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Rendering&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Render Attached Lights&#039;&#039;&#039;.)&lt;br /&gt;
* &#039;&#039;&#039;Admin&#039;&#039;&#039; - Not unlike [http://www.belolats.com/2010/07/5-inception-levels-4-dream-levels.html descending into another dream level], choose &#039;&#039;&#039;Develop&#039;&#039;&#039; menu &amp;gt; &#039;&#039;&#039;Show Admin Menu&#039;&#039;&#039;. Unlike &#039;&#039;&#039;Advanced&#039;&#039;&#039; and &#039;&#039;&#039;Develop&#039;&#039;&#039;, the options here are view-only, and can only be used by Linden Lab employees. Unless there&#039;s been an actual [[security issues|security exploit]], don&#039;t worry.&lt;br /&gt;
&lt;br /&gt;
== More details ==&lt;br /&gt;
{{Todo|Many details below are for the older Viewer 1.23 and need to be updated.}}&lt;br /&gt;
&lt;br /&gt;
=== Useful Items for General Users ===&lt;br /&gt;
&lt;br /&gt;
* Stop Animating me - Cancels all animations affecting your avatar. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Rebake Textures]]&#039;&#039;&#039; - Forces your computer to redo and send your avatar skin + clothing again.  Sometimes this does not happen correctly the first time, and other users will see your avatar as a persistent cloud (avatar did not load at all), grey (shape loaded but not textures), or parts look wrong (some textures did not load properly).&lt;br /&gt;
&lt;br /&gt;
* Set UI Size to Default&lt;br /&gt;
&lt;br /&gt;
* Set Windows Size - use this to take video at a specific resolution&lt;br /&gt;
&lt;br /&gt;
* Limit Select Distance - disable to edit far-away objects&lt;br /&gt;
&lt;br /&gt;
* Disable Camera Constraints - disable it to zoom around freely&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;High Res Snapshot&#039;&#039;&#039; - doubles the pixel count of snapshots saved to disk&lt;br /&gt;
&lt;br /&gt;
* Quiet Snapshots to Disk - enable to take snapshots without the usual sound and avatar animation&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Show Debug Settings&#039;&#039;&#039; - Enter &amp;quot;RenderFarClip&amp;quot; to set draw distance to non-standard values.  Values below normal 64m minimum are useful to reduce lag. &#039;&#039;&#039;Caution:&#039;&#039;&#039; randomly changing debug settings can mess up your viewer program and cause it to crash; in that case you can delete or rename your &#039;&#039;settings.xml&#039;&#039; file to force all settings to their default values.&lt;br /&gt;
&lt;br /&gt;
=== All Advanced Menu Items (obsolete 1.23 picture) ===&lt;br /&gt;
&lt;br /&gt;
[[File:V1.23 Advanced Menu.jpg|thumb|300px|left]]&lt;br /&gt;
&lt;br /&gt;
== Consoles (should be moved to Develop menu page) ==&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Consoles Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
Displays fixed windows with technical information about the viewer program:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Frame Console&#039;&#039;&#039;&#039;&#039; - it&#039;s no more in V2 !&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;[[Texture Console]]&#039;&#039;&#039;&#039;&#039; - Shows progress and status information about textures while they are being fetched or decoded (size, memory taken up by them, level of detail...)&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Debug Console&#039;&#039;&#039;&#039;&#039; - Shows a console window that displays technical information about the client&#039;s actions as it does them&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;[[Fast Timers]]&#039;&#039;&#039;&#039;&#039; - Shows how much time different tasks that are executed for each frame take (in other words, how much of each frame in the client is taken up by specific processes)&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Notifications Console&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Region Info to Debug Console&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Group Info to Debug Console&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Capabilities Info to Debug Console&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;HUD Info Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
Displays fixed overlay on the 3D view with the following choices:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Velocity&#039;&#039;&#039;&#039;&#039; - Shows a scale with current avatar velocity in m/s&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Camera&#039;&#039;&#039;&#039;&#039; - Shows avatar and camera positions in grid coordinates&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Wind&#039;&#039;&#039;&#039;&#039; - Shows wind speed and direction&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;FOV&#039;&#039;&#039;&#039;&#039; - Shows camera field of view&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;High-res Snapshot&#039;&#039;&#039; - When set, makes a snapshot double the screen size instead of equal to the screen size.  &lt;br /&gt;
* &#039;&#039;&#039;[[Quiet Snapshots to Disk]]&#039;&#039;&#039; - When set snapshot sound and animation are not played.&lt;br /&gt;
* &#039;&#039;&#039;Show Mouselook Crosshairs&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[[Debug Permissions]]&#039;&#039;&#039; - Shows detailed information about object permissions in the edit menu.&lt;br /&gt;
* &#039;&#039;&#039;Clear Group Cache&#039;&#039;&#039; - Clears the cached groupmembers lists.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Rendering Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
Controls many aspects of how the graphics card or chip displays the 3D view&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Types&#039;&#039;&#039;&#039;&#039; &amp;gt; - The items below are displayed when checked &lt;br /&gt;
&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Simple&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Alpha&#039;&#039;&#039;&#039;&#039; - [[Transparency]]/opacity&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Tree&#039;&#039;&#039;&#039;&#039; - Toggles rendering of [[terrain]] plants.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Character&#039;&#039;&#039;&#039;&#039; - Toggles rendering of the avatar mesh.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;SurfacePatch&#039;&#039;&#039;&#039;&#039; - [[Ground]]&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Sky&#039;&#039;&#039;&#039;&#039; - Toggles rendering of the sky box.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Water&#039;&#039;&#039;&#039;&#039; - Toggles rendering of water.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Ground&#039;&#039;&#039;&#039;&#039; - &#039;&#039;not sure what it renders but disabling it has not effect other than speeding up the client. -spitfire clary&#039;&#039;&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Volume&#039;&#039;&#039;&#039;&#039; - [[Prim]]s&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Grass&#039;&#039;&#039;&#039;&#039; - [[Grass]] and other terrain vegetation&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Clouds&#039;&#039;&#039;&#039;&#039; - [[Cloud]]s&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Particles&#039;&#039;&#039;&#039;&#039; - Toggles rendering of [[particles]].&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Bump&#039;&#039;&#039;&#039;&#039; - [[Bumpmapping]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Features&#039;&#039;&#039;&#039;&#039; &amp;gt; -&lt;br /&gt;
&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;UI&#039;&#039;&#039;&#039;&#039; - Toggle rendering of the [[user interface]]. Make sure to remember the key shortcut, as once you disable this the menus will disappear.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Selected&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Highlighted&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Dynamic Textures&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Foot Shadows&#039;&#039;&#039;&#039;&#039; - Toggles rendering of the small [[shadow]]s that appear at any [[avatar]]&#039;s feet.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Fog&#039;&#039;&#039;&#039;&#039; - [[Fog]]&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Test FRInfo&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Flexible Object&#039;&#039;&#039;&#039;&#039; - [[Flexible]] objects&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Info Displays&#039;&#039;&#039;&#039;&#039; &amp;gt; -&lt;br /&gt;
&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Verify &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;BBoxes &#039;&#039;&#039;&#039;&#039; - Bounding boxes&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Points &#039;&#039;&#039;&#039;&#039; - Vertices&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Octree &#039;&#039;&#039;&#039;&#039; - Occlusion tree&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Shadow Frusta &#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Occlusion &#039;&#039;&#039;&#039;&#039; - Occlusion planes&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Render Batches &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Animated Textures &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Texture Priority &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Avatar Rendering Cost &#039;&#039;&#039;&#039;&#039; - Shows a score above each avatar, indicating, how &#039;&#039;expensive&#039;&#039; it is to render. A higher score will lag the viewer more than a low score. Read [[Avatar Rendering Cost]] for more details.&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Texture Area (sqrt(A)) &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Face Area (sqrt(A)) &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Lights &#039;&#039;&#039;&#039;&#039; - [[Light]]s&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Particles &#039;&#039;&#039;&#039;&#039; - [[Particles]]&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Composition &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Glow &#039;&#039;&#039;&#039;&#039; - [[Glow]]&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Raycasting &#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Sculpt &#039;&#039;&#039;&#039;&#039; - [[Sculpted prim]]s&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Vectorize Perf Test&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Render Tests&#039;&#039;&#039;&#039;&#039; &amp;gt; -&lt;br /&gt;
&lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Camera Offset&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Randomize Framerate&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Periodic Slow Frame&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
::&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039;Frame Test&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Axes&#039;&#039;&#039;&#039;&#039; - Render coordinate frame at your position &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Hide Selected&#039;&#039;&#039;&#039;&#039; - Stops rendering of any selected object.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Tangent Basis&#039;&#039;&#039;&#039;&#039; - Render normal and binormal (debugging bump mapping) &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Selected Texture Info&#039;&#039;&#039;&#039;&#039; - When modify rights are granted, this outputs the texture UUIDs placed on a selected object.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Wireframe&#039;&#039;&#039;&#039;&#039; - Shows the world in [[wireframe]] mode.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Object-Object Occlusion&#039;&#039;&#039;&#039;&#039; - Skips rendering of objects that are out of view.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Debug GL&#039;&#039;&#039;&#039;&#039; - Enable strict GL debugging. &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Debug Pipeline&#039;&#039;&#039;&#039;&#039; - Enable strict pipeline debugging. &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Fast Alpha&#039;&#039;&#039;&#039;&#039; - Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces). &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Animate Textures&#039;&#039;&#039;&#039;&#039; - Enable texture animation (debug) &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Disable Textures&#039;&#039;&#039;&#039;&#039; - &lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Run Multiple Threads&#039;&#039;&#039;&#039;&#039; &amp;gt; - Improves performance by allowing threads to run in the background while rendering.  You should enable this option!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Cheesy Beacon&#039;&#039;&#039;&#039;&#039; - Changes the default tracking beacon to an animated &amp;quot;pulsing&amp;quot; beacon.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Attached Lights&#039;&#039;&#039;&#039;&#039; - Disables [[attach]]ed lightsources when unticked.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; &#039;&#039;&#039;&#039;&#039;Attached Particles&#039;&#039;&#039;&#039;&#039; - Disables attached particle sources when unticked.&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;World Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Sim Sun Override&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Scripted Camera&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Fixed Weather&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Region Object Cache&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;UI Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Rotate Mini-Map&#039;&#039;&#039;&#039;&#039; - If is checked (&amp;quot;X&amp;quot;) the Mini-Map rotates with the movement of your avatar. If uncheck, the north (N) is always up, the compass don&#039;t rotate.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Use default system color picker&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show search panel in overlay bar&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Web Browser Test&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Editable UI&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump SelectMgr&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Inventory&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Focus Holder&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Print Selected Object Info&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Print Agent Info&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Memory Stats&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Double-Click Auto-Pilot&#039;&#039;&#039;&#039;&#039; - Torley Linden wrote [[User:Torley Linden/Debug Settings|here]]: &#039;&#039;&amp;quot;Some of you may find it useful for navigation. Set it to TRUE, then anywhere you double-click (with the left mouse button) inworld, you&#039;ll automatically walk, run, or fly towards. Our autopilot is kind of flakey, so don&#039;t be surprised if this doesn&#039;t always work and you get an &amp;quot;Autopilot canceled&amp;quot; message. Nevertheless, a fun novelty.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug SelectMgr&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Clicks&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Views&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Name Tooltips&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Mouse Events&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Keys&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug WindowProc&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Text Editor Tips&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Time&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Render Info&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Matrices&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Color Under Cursor&#039;&#039;&#039;&#039;&#039; - Show the RGB color values of the pixel the cursor is on. (Note: The fourth number in the sequence shows the opacity values for UI elements, and for post-process effects such as glow. This number will remain at zero unless the cursor is over such an item.)&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;XUI Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Floater Test...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Font Test...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Export Menus to XML...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Edit UI...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Load from XML...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Save to XML...&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show XUI Names&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Character Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Grab Baked Texture &amp;gt;&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Iris&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Head&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Upper Body&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Lower Body&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Skirt&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Hair&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Character Tests &amp;gt;&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Go Away/AFK When Idle&#039;&#039;&#039;&#039;&#039; - When checked, this item uses an idle timer to set (away) and auto-logout.  It is enabled by default.  If you do nothing with keyboard or mouse for 5 minutes, your avatar will show (Away) status, and after 30 minutes will be logged out automatically.&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Appearance to XML&#039;&#039;&#039;&#039;&#039; - Saves your current appearance settings (avatar shape) to C:\Users\(username)\AppData\Roaming\SecondLife\user_settings\new archetype.xml&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Toggle Character Geometry&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Test Male&#039;&#039;&#039;&#039;&#039; - Changes the avatar&#039;s appearance to a default male avatar.&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Test Female&#039;&#039;&#039;&#039;&#039; - Changes the avatar&#039;s appearance to a default female avatar.&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Toggle PG&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
:&amp;gt; &amp;gt; &#039;&#039;&#039;&#039;&#039; Allow Select Avatar&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Enable Lip Sync (Beta)&#039;&#039;&#039;&#039;&#039; - Makes your avatar&#039;s mouth move in sync with voice chat(?).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; [[Tap-Tap-Hold To Run]]&#039;&#039;&#039;&#039;&#039; - When toggled on, pressing the up-arrow key {{Keypress|↑}} twice shortly after another results in running.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Force Params to Default&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Reload Vertex Shader&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Animation Info&#039;&#039;&#039;&#039;&#039; - Displays currently active animation [[UUID]]s above avatar&#039;s heads.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Slow Motion Animations&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Look At&#039;&#039;&#039;&#039;&#039; - Indicates via crosshairs where agents are focusing their camera(s). It&#039;s not distinguishable which crosshair belongs to which agent. See the document about [[Show Look At]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Point At&#039;&#039;&#039;&#039;&#039; - See video tutorial about [[Video Tutorial/See where you&#039;re pointing with Show Point At|Show Point At]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Joint Updates&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Disable LOD&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Character Vis&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Show Collision Skeleton&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Display Agent Target&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Debug Rotation&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Attachments&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; [[Rebaking textures|Rebake Textures]]&#039;&#039;&#039;&#039;&#039; - Forces your computer to redo and send your avatar skin + clothing again. Sometimes this does not happen correctly the first time, and other users will see your avatar as a persistent cloud (avatar did not load at all), grey (shape loaded but not textures), or parts look wrong (some textures did not load properly).&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Network Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Enable Message Log&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Disable Message Log&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Velocity Interpolate Objects&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Ping Interpolate Object Positions&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Drop a Packet&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Recorder Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Full Session Logging&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Start Logging&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Stop Logging&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Log 10 Seconds&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Log 30 Seconds&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Log 60 Seconds&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Start Playback&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Stop Playback&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Loop Playback&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Start Record&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Stop Record&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Remainder of Advanced Menu&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Show Updates&#039;&#039;&#039; - Indicates visually which objects were updated recently. See [[I see blue, green, or red triangles coming from objects inworld that I think shouldn&#039;t be there.]] &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Compress Images&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Limit Select Distance&#039;&#039;&#039; - Limits the distance in which you&#039;re allowed to select and edit objects.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Disable Camera Constraints&#039;&#039;&#039; - Your camera movement is constrained in a maximum distance to your avatar. Ticking this option will allow you to move the camera further away.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mouse Smoothing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Console Window&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Output Debug Minidump&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Debug Settings]]&#039;&#039;&#039; - Opens the &amp;quot;Debug Settings&amp;quot; floating window.  Allows manually setting essentially every Viewer setting.  &#039;&#039;&#039;Warning:&#039;&#039;&#039; randomly playing with these settings can make the viewer program unusable.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;View Admin Options&#039;&#039;&#039; - Makes the client act as if it has owner permissions on all objects and land. Any action the user does not have permission for will generate an error message. Also toggles visibility of the &amp;quot;Admin&amp;quot; dropdown menu on the top menu bar.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Request Admin Status&#039;&#039;&#039; - Also known as &amp;quot;[[God Mode]]&amp;quot;.  Enables administrative functions.  This only works for Linden Staff.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Leave Admin Status&#039;&#039;&#039; - Ends Admin Status or &amp;quot;[[God Mode]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Admin Menu ===&lt;br /&gt;
&lt;br /&gt;
[[File:V1.23 Admin Menu.jpg|thumb|300px|left]]&lt;br /&gt;
&lt;br /&gt;
{{KBwarning| This menu is off by default. Nobody who is not a [[Linden]] can use the options in the &#039;&#039;&#039;Admin&#039;&#039;&#039; menu. The options in the &#039;&#039;&#039;Admin&#039;&#039;&#039; menu are for viewing purposes only!}}&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Object Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Take Copy&#039;&#039;&#039;&#039;&#039; - Allows a Linden to take a copy of an object, regardless of ownership.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Force Owner to Me&#039;&#039;&#039;&#039;&#039; - Allows a Linden to make themselves the owner of any object. However, copy/mod/trans permissions are unaffected.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Force Owner Permissive&#039;&#039;&#039;&#039;&#039; - Allows a Linden to make themselves the owner of any object and also gives them full permissions to copy, modify and transfer that object.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Delete&#039;&#039;&#039;&#039;&#039; - Allows a Linden to delete an object, regardless of ownership.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Lock&#039;&#039;&#039;&#039;&#039; - Unknown at this time (Probably allows a Linden to lock an object so that nobody, even its creator and/or owner, can edit it).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Get Asset IDs&#039;&#039;&#039;&#039;&#039; - Unknown at this time (Probably allows a Linden to get the [[UUID]]s of an object and its associated assets).&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Parcel Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Owner to Me&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Set to Linden Content&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Claim Public Land&#039;&#039;&#039;&#039;&#039; -&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Region Submenu &amp;gt;&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;&amp;gt; Dump Temp Asset Data&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;God Tools...&#039;&#039;&#039; - Opens &amp;quot;God Tools&amp;quot; floating window&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Save Region State&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Advanced menu]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlAttachToAvatar&amp;diff=1171403</id>
		<title>LlAttachToAvatar</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlAttachToAvatar&amp;diff=1171403"/>
		<updated>2012-08-04T23:27:30Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added link to new function, llAttachToAvatarTemp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2=&lt;br /&gt;
{{LSL_Function/permission|PERMISSION_ATTACH|grant=the owner}}&lt;br /&gt;
{{Issues/VWR-12525}}{{Issues/SCR-137}}{{Issues/SVC-890}}{{Issues/SCR-277}}&lt;br /&gt;
|func_id=113|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llAttachToAvatar&lt;br /&gt;
|p1_type=integer|p1_name=attach_point|p1_desc=ATTACH_* constant or valid value (see the tables below)&lt;br /&gt;
|func_desc=Attaches the object to the avatar who has granted permission to the script. The object is taken into the users inventory and attached to &#039;&#039;&#039;attach_point&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;attach_point&#039;&#039;&#039; is zero, then the object attaches to the attach point it was most recently attached to.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Attach points can be occupied by multiple attachments.{{Footnote|Multiple attachments per attach point were added as result of {{Jira|SCR-277}}|Multiple attachments per attach point were added as result of SCR-277}}&lt;br /&gt;
**This was not always the case, previously if &#039;&#039;&#039;attach_point&#039;&#039;&#039; was occupied, the existing object was detached and the new attachment took it&#039;s place. &lt;br /&gt;
*Objects attached to the head (and any attachment position within the head) will not be visible in First Person view (aka [[Mouselook]]) if &amp;quot;show attachments in mouselook&amp;quot; is disable.&lt;br /&gt;
*If &#039;&#039;&#039;attach_point&#039;&#039;&#039; is zero but the object was never previously attached, it defaults to the right hand ({{LSL Const|ATTACH_RHAND|integer|6|c=right hand}}).&lt;br /&gt;
*If the object is already attached the function fails silently, regardless if the &#039;&#039;&#039;attach_point&#039;&#039;&#039; is a different [[llGetAttached|attach point]]. -- [[Template:Issues/SCR-137|SCR-137]]&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;//-- rez object on ground, drop in this script, it will request permissions to attach,&lt;br /&gt;
//-- and then attach to the left hand if permission is granted. if permission is denied,&lt;br /&gt;
//-- then the script complains.&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llRequestPermissions( llGetOwner(), PERMISSION_ATTACH );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    run_time_permissions( integer vBitPermissions )&lt;br /&gt;
    {&lt;br /&gt;
        if( vBitPermissions &amp;amp; PERMISSION_ATTACH )&lt;br /&gt;
        {&lt;br /&gt;
            llAttachToAvatar( ATTACH_LHAND );&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay( &amp;quot;Permission to attach denied&amp;quot; );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    on_rez(integer rez)&lt;br /&gt;
    {&lt;br /&gt;
        if(!llGetAttached())&lt;br /&gt;
        { //reset the script if it&#039;s not attached.&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    attach(key AvatarKey)&lt;br /&gt;
    {&lt;br /&gt;
        if(AvatarKey)&lt;br /&gt;
        {//event is called on both attach and detach, but Key is only valid on attach&lt;br /&gt;
            integer test = llGetAttached();&lt;br /&gt;
            if (test) {&lt;br /&gt;
                llOwnerSay( &amp;quot;The object is attached&amp;quot; );&lt;br /&gt;
            } else {&lt;br /&gt;
                llOwnerSay( &amp;quot;The object is not attached&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llAttachToAvatarTemp]]|Attach an object to any avatar}}&lt;br /&gt;
{{LSL DefineRow||[[llDetachFromAvatar]]|Detaches the object from the avatar}}&lt;br /&gt;
{{LSL DefineRow||[[llGetAttached]]|Gets the attach point number}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_events&lt;br /&gt;
|constants={{LSL_Constants_Attachment}}&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Attachment&lt;br /&gt;
|cat2=Avatar&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation/Mesh_Import_User_Group&amp;diff=1170648</id>
		<title>Content Creation/Mesh Import User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation/Mesh_Import_User_Group&amp;diff=1170648"/>
		<updated>2012-07-16T19:06:33Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
Come discuss any issues around content creation - its challenges, limitations in the tools, workarounds and successes. Land is provided next to the office build for rezzing example content. &lt;br /&gt;
Bug reports and feature requests should have JIRA ticket numbers if at all possible, as it makes it easier to collaborate on issues both internally and externally.&lt;br /&gt;
&lt;br /&gt;
Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
{{Navbox/Mesh|project}}&lt;br /&gt;
|date-time= &lt;br /&gt;
Mondays at Noon in Pacific time (SL standard time)&lt;br /&gt;
&lt;br /&gt;
|location= &lt;br /&gt;
[http://maps.secondlife.com/secondlife/Borrowdale/79/225/32 Borrowdale on AGNI]&lt;br /&gt;
&lt;br /&gt;
|team=&lt;br /&gt;
Nyx Linden, Runitai Linden, and occasional other guest lindens. Please contact one of us if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add topics below &#039;&#039;&#039;prior to 11:50 AM&#039;&#039;&#039;. Also, please put your SL name down so we can follow up if we have questions. Thanks!&lt;br /&gt;
&lt;br /&gt;
Enter agenda items here (with name, please)&lt;br /&gt;
# Any chance we will ever see support for more riggable extremities (like a tail or true taur style avatars) ? [[User:Squirrel Wood|Squirrel Wood]] 10:22, 16 July 2012 (PDT)&lt;br /&gt;
# I&#039;ve seen a lot of marketplace failed deliveries. when can we expect a system that just works? [[User:GM Nikolaidis|GM Nikolaidis]] 10:37, 16 July 2012 (PDT)&lt;br /&gt;
# Is there a known fix for transparent textures not showing up as transparent unless highlighted? [[User:Aki Shichiroji|Aki Shichiroji]] 12:05, 16 July 2012 (PDT)&lt;br /&gt;
# Are morph targets back on the table? [[User:Stickman Ingmann|Stickman]] 12:06, 16 July 2012 (PDT)&lt;br /&gt;
# Are custom skeletons still in the works? How about object/non-avatar skeleton and animations to go along with the pathfinding project? [[User:Stickman Ingmann|Stickman]] 12:06, 16 July 2012 (PDT)&lt;br /&gt;
# your topic here! End with 3 or 4 ~ to add your name or name and date&lt;br /&gt;
&lt;br /&gt;
|archive=&lt;br /&gt;
{{:Content_Creation,_Mesh_Import_User_Group/Archive}}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Mesh]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation_Improvement_Informal_User_Group&amp;diff=1170135</id>
		<title>Content Creation Improvement Informal User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation_Improvement_Informal_User_Group&amp;diff=1170135"/>
		<updated>2012-07-03T17:26:04Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Oz/User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
User group for improving content creation on Second Life either through creating new features, or enhancing existing features.&lt;br /&gt;
All topics relating to the improvement of content creation, whether it&#039;s adding new features or improving existing features, are valid topics for discussion.  When in doubt about whether or not a topic is appropriate, contact Geenz Spad.&lt;br /&gt;
|date-time=&lt;br /&gt;
Every Tuesday&amp;amp;nbsp;03:00-04:00&amp;amp;nbsp;PM&amp;amp;nbsp;SLT&lt;br /&gt;
|location={{SLurl|region=Hippotropolis|x=118|y=110|z=31|title=Hippotropolis Auditorium}}&lt;br /&gt;
|team=Chaired by [[User:Geenz Spad|Geenz Spad]], [[User:Siddean Munro|Siddean Munro]].  Linden Liason: [[User:Oz Linden|Oz Linden]].&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;!--======================== Please do not edit above this line ======================&lt;br /&gt;
&lt;br /&gt;
Feel free to add any open development related topic to the end of this agenda&lt;br /&gt;
by adding a numbered list entry; &lt;br /&gt;
&lt;br /&gt;
Copy the following line to the end of the list below and change &#039;topic&#039; to your topic; the ~~~ will be replaced with your name:&lt;br /&gt;
# topic (~~~)&lt;br /&gt;
&lt;br /&gt;
If you refer to a Jira issue, please use the template like this:&lt;br /&gt;
  {{JiraIssue|id|description}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
#Introduction to the first Content Creation Improvement UG meeting. [[User:Geenz Spad|Geenz Spad]]&lt;br /&gt;
# Educating users on efficiency, and Linden Lab setting building standards. ([[User:Stickman Ingmann|Stickman]])&lt;br /&gt;
&amp;lt;!--Add your topic before this line - Use 3 or 4 ~ to add your name or name and date&lt;br /&gt;
======================== Please do not edit below this line ======================&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Delay&amp;diff=1168465</id>
		<title>LSL Delay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Delay&amp;diff=1168465"/>
		<updated>2012-06-05T11:44:29Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Testing says touch() is 0.05s, not 0.1.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
{{LSLC|}}&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
Some LSL functions delay script execution when they are called.&lt;br /&gt;
&lt;br /&gt;
The delay is measured in seconds (it&#039;s a float value).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The delay in seconds}}&lt;br /&gt;
! Function&lt;br /&gt;
|- &lt;br /&gt;
|| 20.0 &lt;br /&gt;
|| [[llRefreshPrimURL]]&lt;br /&gt;
|- &lt;br /&gt;
|| 20.0 &lt;br /&gt;
|| [[llSetPrimURL]]&lt;br /&gt;
|- &lt;br /&gt;
|| 20.0 &lt;br /&gt;
|| [[llEmail]]&lt;br /&gt;
|- &lt;br /&gt;
|| 10.0 &lt;br /&gt;
|| [[llLoadURL]]&lt;br /&gt;
|- &lt;br /&gt;
|| 10.0 &lt;br /&gt;
|| [[llGetSimulatorHostname]]&lt;br /&gt;
|- &lt;br /&gt;
|| 5.0 &lt;br /&gt;
|| [[llTeleportAgentHome]]&lt;br /&gt;
|- &lt;br /&gt;
|| 3.0 &lt;br /&gt;
|| [[llSendRemoteData]]&lt;br /&gt;
|- &lt;br /&gt;
|| 3.0 &lt;br /&gt;
|| [[llRemoteLoadScriptPin]]&lt;br /&gt;
|- &lt;br /&gt;
|| 3.0 &lt;br /&gt;
|| [[llRemoteLoadScript]]&lt;br /&gt;
|- &lt;br /&gt;
|| 3.0 &lt;br /&gt;
|| [[llRemoteDataReply]]&lt;br /&gt;
|- &lt;br /&gt;
|| 3.0 &lt;br /&gt;
|| [[llGiveInventoryList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 2.0 &lt;br /&gt;
|| [[llSetParcelMusicURL]]&lt;br /&gt;
|- &lt;br /&gt;
|| 2.0 &lt;br /&gt;
|| [[llParcelMediaQuery]]&lt;br /&gt;
|- &lt;br /&gt;
|| 2.0 &lt;br /&gt;
|| [[llParcelMediaCommandList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 2.0 &lt;br /&gt;
|| [[llInstantMessage]]&lt;br /&gt;
|- &lt;br /&gt;
|| 2.0 &lt;br /&gt;
|| [[llGetParcelPrimOwners]]&lt;br /&gt;
|-&lt;br /&gt;
|| 1.0&lt;br /&gt;
|| [[llTextBox]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llRequestSimulatorData]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The delay in seconds}}&lt;br /&gt;
! Function&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llRequestInventoryData]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llPreloadSound]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llOpenRemoteDataChannel]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llModPow]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llMapDestination]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llDialog]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llCreateLink]]&lt;br /&gt;
|- &lt;br /&gt;
|| 1.0 &lt;br /&gt;
|| [[llCloseRemoteDataChannel]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.3 &lt;br /&gt;
|| [[llXorBase64Strings]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetTexture]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetRot]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetRemoteScriptAccessPin]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetPrimitiveParams]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetPos]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetLocalRot]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetLinkTexture]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llSetLinkPrimitiveParams]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llScaleTexture]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llRotateTexture]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The delay in seconds}}&lt;br /&gt;
! Function&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llOffsetTexture]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.2 &lt;br /&gt;
|| [[llGetPrimitiveParams]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llRezObject]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llRezAtRoot]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llResetLandPassList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llResetLandBanList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llRequestAgentData]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llRemoveFromLandPassList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llRemoveFromLandBanList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llMakeSmoke]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llMakeFountain]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llMakeFire]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llMakeExplosion]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llGetNumberOfNotecardLines]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llGetNotecardLine]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llAdjustSoundVolume]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llAddToLandPassList]]&lt;br /&gt;
|- &lt;br /&gt;
|| 0.1 &lt;br /&gt;
|| [[llAddToLandBanList]]&lt;br /&gt;
|- &lt;br /&gt;
|| variable&lt;br /&gt;
|| [[llSleep|llSleep(float variable)]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Events==&lt;br /&gt;
All events have a min delay, the default delay between events is 0.05 seconds, a longer delay can be specified with [[llMinEventDelay]]. A delay less than the default will have the same effect as if it were the default.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The minimum delay in seconds}}&lt;br /&gt;
! Events&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[at_rot_target]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[at_target]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[attach]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[changed]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[collision]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[collision_end]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[collision_start]]&lt;br /&gt;
|- &lt;br /&gt;
||0.05&lt;br /&gt;
||[[control]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[dataserver]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[email]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[http_response]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The minimum delay in seconds}}&lt;br /&gt;
! Events&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[http_request]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[land_collision]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[land_collision_end]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[land_collision_start]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[link_message]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[listen]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[money]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[moving_end]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[moving_start]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[no_sensor]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[not_at_rot_target]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[not_at_target]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! {{HoverText|Delay|The minimum delay in seconds}}&lt;br /&gt;
! Events&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[object_rez]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[on_rez]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[remote_data]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[run_time_permissions]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[sensor]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[state_entry]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[state_exit]]&lt;br /&gt;
|- &lt;br /&gt;
||&lt;br /&gt;
||[[timer]]&lt;br /&gt;
|- &lt;br /&gt;
||0.05&lt;br /&gt;
||[[touch]]&lt;br /&gt;
|- &lt;br /&gt;
||0.05&lt;br /&gt;
||[[touch_end]]&lt;br /&gt;
|- &lt;br /&gt;
||0.05&lt;br /&gt;
||[[touch_start]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1161570</id>
		<title>LlSetKeyframedMotion</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetKeyframedMotion&amp;diff=1161570"/>
		<updated>2012-01-17T23:09:30Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Doesn&amp;#039;t work on attachments.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llSetKeyframedMotion&lt;br /&gt;
|func_id=?&lt;br /&gt;
|func_desc=Specify a list of times, positions, and orientations to be followed by an object. The object will be smoothly moved between keyframes by the simulator. Collisions with other nonphysical or keyframed objects will be ignored (no script events will fire and collision processing will not occur). Collisions with physical objects will be computed and reported, but the keyframed object will be unaffected by those collisions. (The physical object will be affected, however.) &lt;br /&gt;
&lt;br /&gt;
|func_sleep&lt;br /&gt;
|func_energy&lt;br /&gt;
&lt;br /&gt;
|func_footnote&lt;br /&gt;
|p1_type=list|p1_name=keyframes|p1_hover=Strided keyframe list of the form: [vector position, rotation orientation, float time]&lt;br /&gt;
|p1_desc=Strided keyframe list of the form:&lt;br /&gt;
* &#039;&#039;vector&#039;&#039; position (optional via KFM_TRANSLATION and KFM_DATA)&lt;br /&gt;
* &#039;&#039;rotation&#039;&#039; orientation (optional via KFM_ROTATION and KFM_DATA)&lt;br /&gt;
* &#039;&#039;float&#039;&#039; time&lt;br /&gt;
&lt;br /&gt;
Each keyframe is interpreted relative to the previous transform of the object. For example, consider the following list of keyframes: [&amp;lt;0, 0, 10&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, 0&amp;gt;, [[ZERO_ROTATION]], 5, &amp;lt;0, 0, -10&amp;gt;, [[ZERO_ROTATION]], 5]. This would cause the object to move up 10m over the course of 5s. It would then remain at the location for 5s before moving down 10m over the course of another 5s.&lt;br /&gt;
Time values must be greater than 0.1s.&lt;br /&gt;
Linear and angular velocities will be clamped to limits set by the simulator (values TBD).&lt;br /&gt;
An empty list will terminate any keyframed animation currently playing. &lt;br /&gt;
&lt;br /&gt;
|p2_type=list|p2_name=options|p2_desc=modifiers and future options &lt;br /&gt;
&lt;br /&gt;
|spec=&lt;br /&gt;
The following flags will be supported within the &#039;&#039;options&#039;&#039; list:&lt;br /&gt;
*KFM_MODE followed by one of: KFM_LOOP, KFM_REVERSE, KFM_FORWARD, or KFM_PING_PONG will specify the playback mode. Defaults to KFM_FORWARD. Must be specified when the keyframe list is provided.&lt;br /&gt;
*KFM_DATA followed by a bitwise combination of: KFM_TRANSLATION and KFM_ROTATION. By default both rotations and translations must be provided. If you specify one or the other, you should only include translations or rotations in your keyframe list. Must be specified at the time the keyframe list is provided.&lt;br /&gt;
*KFM_COMMAND followed by one of: KFM_CMD_STOP, KFM_CMD_PLAY, KFM_CMD_PAUSE. STOP will pause the animation AND reset it to the beginning. PAUSE will pause the animation without resetting. PLAY will resume a paused or stopped animation. &lt;br /&gt;
Note that if KFM_COMMAND is provided in the options list, it must be the only option in the list, and cannot be specified in the same function call that sets the keyframes list.&lt;br /&gt;
&lt;br /&gt;
Inter-region are supported.&lt;br /&gt;
&lt;br /&gt;
|caveats=&lt;br /&gt;
*This function does not work in attachments.&lt;br /&gt;
*This function can only be called on NON-physical objects. In the future it could be extended to support physical objects, but this is more complicated as collisions could prevent the object from reaching its goal positions on time.&lt;br /&gt;
*Collisions with avatars affect the angular movement of the object and it may not reach the final rotation.&lt;br /&gt;
*This function can only be called on the root prim of a linkset.&lt;br /&gt;
*This function requires the linkset to use the Prim Equivalency system. However, it keyframed objects will not receive the dynamics penalty and can have a physics {{HoverText|PE|Prim Equivalency}} of up to 64.&lt;br /&gt;
*llSetKeyframedMotion is implemented in terms of frames and not real time. To avoid a drift from the expected positions and rotations, use times which are integer multiples of 1/45, e.g. 20.0/45.0, 40.0/45.0, 90.0/45.0, etc. [http://community.secondlife.com/t5/LSL-Scripting/llSetKeyframedMotion-turning-a-corner/td-p/1225219 Forum Thread]&lt;br /&gt;
*There are a few bugs in the avatar animation system that may cause strange looking animations to play when standing on a moving platform (e.g., walking in place, feet-at-pelvis). We hope to fix these in the future, but doing so is out of scope for this feature.&lt;br /&gt;
*As with dynamic objects, objects moving using this function are paused when they are selected by an avatar with adequate permissions (object owner, passenger, etc). When such an avatar deselects the object, motion resumes, even if the object had been paused using KFM_CMD_PAUSE.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;code&amp;gt;// If your client is not mesh-aware use the following line:&lt;br /&gt;
&lt;br /&gt;
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);&lt;br /&gt;
&lt;br /&gt;
//&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;llSetKeyframedMotion([&amp;lt;0,0,10&amp;gt;, 5, &amp;lt;0,0,-10&amp;gt;, 5], [KFM_DATA, KFM_TRANSLATION, KFM_MODE, KFM_PING_PONG]);&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;llSetKeyframedMotion([&amp;lt;0,0,10&amp;gt;, llEuler2Rot(&amp;lt;90, 45, 180&amp;gt; * DEG_TO_RAD), 5, &amp;lt;0,0,-10&amp;gt;, llEuler2Rot(&amp;lt;270, 225, 360&amp;gt; * DEG_TO_RAD), 5], [KFM_MODE, KFM_REVERSE]);&amp;lt;/code&amp;gt;&lt;br /&gt;
|notes=&lt;br /&gt;
Potential Use Cases:&lt;br /&gt;
* Elevators&lt;br /&gt;
* Moving platforms&lt;br /&gt;
* Trains/Fixed-Track Vehicles&lt;br /&gt;
* Moving doors/walls/gates&lt;br /&gt;
* Windmills and other machines&lt;br /&gt;
Targeted coordinate systems: The Translation is in Global coordinates, the Rotation in Local coordinates&lt;br /&gt;
* Say: a move on the X-axis will move the object along the global, region X-axis no matter how the object is rotated&lt;br /&gt;
* Say: a rotate around the X-axis will rotate the object around it&#039;s local, prim X-axis no matter the object&#039;s rotation&lt;br /&gt;
* When the object is not rotated in the global system you won&#039;t notice the difference&lt;br /&gt;
|signature=&lt;br /&gt;
{{LSL Const/Signature|KFM_MODE|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_LOOP|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_REVERSE|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_FORWARD|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_PING_PONG|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_DATA|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_TRANSLATION|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_ROTATION|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_COMMAND|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_CMD_STOP|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_CMD_PLAY|integer}}&lt;br /&gt;
{{LSL Const/Signature|KFM_CMD_PAUSE|integer}}&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1153476</id>
		<title>Limits</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Limits&amp;diff=1153476"/>
		<updated>2011-09-13T09:31:10Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Limit of 5000 IMs per object per hour.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{KBmaster}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Summary ==&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
The Second Life Viewer and simulators have a division of labor, keeping track of the data that makes Second Life run. The Viewer&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Handle locations of objects.&lt;br /&gt;
* Get velocities and other physics information, and does simple physics to keep track of what is moving where.&lt;br /&gt;
&lt;br /&gt;
The simulator&#039;s job is to:&lt;br /&gt;
&lt;br /&gt;
* Run the physics engine.&lt;br /&gt;
* Detect collisions.&lt;br /&gt;
* Keep track of where everything is&lt;br /&gt;
* Send locations of content to the Viewer along with updates when certain changes occur.&lt;br /&gt;
&lt;br /&gt;
Limits are necessary for all of these components to work together. The list below outlines many of the &#039;&#039;&#039;Second Life numerical limits that affect your inworld experience&#039;&#039;&#039;. Some of these will likely change over time, so if you spot something incorrect/outdated, please take a moment to update it.&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|1=The scope of this page is focused on Linden Lab&#039;s official Viewers, keeping in mind [[Third_Party_Viewer_Directory|3rd-party viewers may differ]]. Cite sources and provide substantiation for limits that aren&#039;t provided by Linden Lab. Also, unconfirmed speculation [[Talk:Limits|goes on this discussion page]]. Don&#039;t add data without a hard limit, and don&#039;t add obscure trivia that doesn&#039;t practically affect the general inworld experience.}}&lt;br /&gt;
&lt;br /&gt;
== [[Avatar]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. # of attachment points&#039;&#039;&#039; - 30 for avatar, 8 for [[HUD]].&lt;br /&gt;
** They can be viewed by right-clicking your avatar and choosing &#039;&#039;&#039;Take Off&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;HUD&#039;&#039;&#039; or &#039;&#039;&#039;Detach&#039;&#039;&#039;.&lt;br /&gt;
** With the formal introduction of [[multiple attachments|multiple attachments to a single point]] in Viewer 2.4, you can attach up to 38 total objects, and they can all be attached to a single point. &lt;br /&gt;
* &#039;&#039;&#039;Max. unassisted fly height&#039;&#039;&#039; - Stable hover almost 150m above the ground (terrain mesh).&lt;br /&gt;
** You can easily acquire a flight attachment to fly high. Also see [[flight limit]] and [[Limits#Navigation|the Navigation section]] below.&lt;br /&gt;
* &#039;&#039;&#039;Common shoe sizes&#039;&#039;&#039; - Most women&#039;s shoes are designed for a size 0 (zero) foot. Men&#039;s generally scale up to 14.&lt;br /&gt;
** You can check this by going to Edit menu &amp;gt; Appearance and clicking on the Shape &amp;gt; Legs tab.&lt;br /&gt;
&amp;lt;!--Can someone verify the following?&lt;br /&gt;
* &#039;&#039;&#039;Min. length of avatar name&#039;&#039;&#039; - 2 for first name, 2 for last name, 5 in total (including the space).--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Max. length of avatar name&#039;&#039;&#039; - 31 for first name, 31 for last name, 63 in total (including the space).&lt;br /&gt;
* &#039;&#039;&#039;Max. avatar speed&#039;&#039;&#039; - 250m/s (with only attachments to assist)&lt;br /&gt;
* &#039;&#039;&#039;Max. teleport speed&#039;&#039;&#039;&amp;lt;!-- - 3 teleports per 15 seconds (server 1.27.0) and 10 teleports per 15 seconds (server 1.27.1)--&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.1&#039;&#039;&#039; - 10 teleports per 15 seconds&lt;br /&gt;
** &#039;&#039;&#039;Server 1.27.0&#039;&#039;&#039; - 3 teleports per 15 seconds&lt;br /&gt;
&lt;br /&gt;
== [[Animation]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. length of animation:&#039;&#039;&#039; 30.0 seconds&lt;br /&gt;
* &#039;&#039;&#039;Min. animation priority:&#039;&#039;&#039; 0&lt;br /&gt;
* &#039;&#039;&#039;Max. animation priority:&#039;&#039;&#039; 4&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Max. [[prim]] dimensions (non-[[megaprim]])&#039;&#039;&#039; - 64&amp;amp;times;64&amp;amp;times;64m&lt;br /&gt;
** it was 10&amp;amp;times;10&amp;amp;times;10m before SL Server 3.0.0 (238864) &lt;br /&gt;
* &#039;&#039;&#039;Min. prim dimensions&#039;&#039;&#039; - 0.01&amp;amp;times;0.01&amp;amp;times;0.01m&lt;br /&gt;
* &#039;&#039;&#039;Max. # of prims in a linkset&#039;&#039;&#039; - 256 &lt;br /&gt;
** It was 255 before SL Server 1.26.&lt;br /&gt;
* &#039;&#039;&#039;Max. link distance&#039;&#039;&#039; - See [[Linkability Rules]].&lt;br /&gt;
* &#039;&#039;&#039;Max. # of prims in a physical object&#039;&#039;&#039; - 32&lt;br /&gt;
** If you try to link more, it&#039;ll either say &amp;quot;Can&#039;t enable physics for objects with more than 32 primitives&amp;quot; or &amp;quot;Object has too many primitives -- its dynamics have been disabled.&amp;quot;.&lt;br /&gt;
** On server versions 1.38 and below, each sitting avatar counted as 1 prim. From 1.40.2 the limit is only on actual prims.&lt;br /&gt;
* &#039;&#039;&#039;Max. build or rez height&#039;&#039;&#039; - 4,096m&lt;br /&gt;
** This is 768m for Viewers prior to SL 1.20&lt;br /&gt;
* &#039;&#039;&#039;Max. prim name length&#039;&#039;&#039; - 63 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: This is the same total character limit as avatar names.&lt;br /&gt;
* &#039;&#039;&#039;Max. prim description length&#039;&#039;&#039; - 127 bytes UTF-8 [[string]]&lt;br /&gt;
** Note: &lt;br /&gt;
* &#039;&#039;&#039;Temporary prim lifetime&#039;&#039;&#039; - around 60 seconds&lt;br /&gt;
* &#039;&#039;&#039;Max. number of temporary prims&#039;&#039;&#039; - regular_prim_limit - current_regular_prims + minimum(0.5 * regular_prim_limit + 400, 1000)&lt;br /&gt;
** From [http://forums-archive.secondlife.com/8/cd/305651/1.html Andrew Linden&#039;s February 2009 discussion])&lt;br /&gt;
* &#039;&#039;&#039;Max. length of hovertext (via [[llSetText]] or [[PRIM_TEXT]])&#039;&#039;&#039; - 254 bytes UTF-8 [[string]]&lt;br /&gt;
&lt;br /&gt;
== Chat (text) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Whisper distance&#039;&#039;&#039; - 10 m&lt;br /&gt;
* &#039;&#039;&#039;Chat distance&#039;&#039;&#039; - 20 m&lt;br /&gt;
* &#039;&#039;&#039;Shout distance&#039;&#039;&#039; - 100 m&lt;br /&gt;
** &#039;&#039;Rule of thumb:&#039;&#039; when you&#039;re at default zoom (&#039;&#039;&#039;View&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Reset View&#039;&#039;&#039;), if you can see another person&#039;s nametag, they can see your chat. If they&#039;re far enough away that you don&#039;t see a nametag, they won&#039;t &amp;quot;hear&amp;quot; you unless you shout.&lt;br /&gt;
** Text spoken as a &amp;quot;Chat&amp;quot; step in a gesture cannot be shouted or whispered&lt;br /&gt;
** Text spoken as &amp;quot;Replace with&amp;quot; text in a gesture can be whispered or shouted in Viewer 2 either by putting &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the start of the &amp;quot;Replace with&amp;quot; text or by typing &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; at the beginning of the nearby chat input bar, followed by the gesture&#039;s trigger text. (Though, if you do both, or if a gesture with built-in &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; is used mid-sentence, the &amp;quot;/whisper&amp;quot; or &amp;quot;/shout&amp;quot; will appear literally.) Viewer 1 does not honor &amp;lt;code&amp;gt;/whisper&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/shout&amp;lt;/code&amp;gt; and will always send them literally.&lt;br /&gt;
* &#039;&#039;&#039;Max. length of a chat message&#039;&#039;&#039; - 1023 bytes/single-byte characters&lt;br /&gt;
** The same holds true for an IM &amp;lt;-&amp;gt; email replies.&lt;br /&gt;
*** When the receiver is offline, if they set an IM to Email feature (&#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Preferences&#039;&#039;&#039; (or press {{K|Ctrl|P}}), go to the &#039;&#039;&#039;Communication&#039;&#039;&#039; tab and check the &#039;&#039;&#039;Send IM to Email&#039;&#039;&#039; checkbox), it will send offline messages directly to the mailbox connected to your account. When an offline message is received via Email, this message can also be answered via Email again. The length of properly delivered Email replies is limited to 1023 bytes/single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Capped&#039;&#039;&#039; - Maximum number of offline messages (involving [[IM]]s, inventory offers, group notices and group invitations) received before messages get capped is 25.&lt;br /&gt;
** Senders can&#039;t know whether their messages were capped or not.&lt;br /&gt;
* &#039;&#039;&#039;Email -&amp;gt; IM&#039;&#039;&#039; replies can be sent up to 5 days after receiving the offline IM the email is meant to answer.&amp;lt;sup&amp;gt;[&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://blogs.secondlife.com/community/features/blog/2007/02/06/im-to-e-mail-return-addresses-changing blog]&amp;lt;/span&amp;gt;]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;IMs&#039;&#039;&#039; are retained on Linden Lab&#039;s servers for up to 31 days before being discarded. For example, if someone sends you an Instant Message and the next time you login is 33 days later, you won&#039;t get it.&lt;br /&gt;
** Torley confirmed this with Kelly Linden.&lt;br /&gt;
* The number of &#039;&#039;&#039;IMs&#039;&#039;&#039; an object can send in one hour is 5000.&lt;br /&gt;
&lt;br /&gt;
== [[Gesture]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shortcut key mapping:&#039;&#039;&#039; 33 unique combinations, since {{K|F2}}&amp;amp;ndash;{{K|F12}} can be used with the {{K|Ctrl}} or {{K|Shift}} modifiers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Chat step length:&#039;&#039;&#039; 127 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Wait time:&#039;&#039;&#039; 3600 seconds (one hour).&lt;br /&gt;
&lt;br /&gt;
== [[Group]]s ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of groups you can belong to:&#039;&#039;&#039; 42&lt;br /&gt;
** Roles within groups are sort of like sub-groups. In many cases, you can use them instead of creating new groups.&lt;br /&gt;
* &#039;&#039;&#039;Minimum number of members in a group:&#039;&#039;&#039; 2&lt;br /&gt;
** A group with only 1 person for 48 hours will be disbanded (cancelled). Unless the group owns land.&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of roles allowed in a group:&#039;&#039;&#039; 10 (including &amp;quot;Owners&amp;quot; and &amp;quot;Everyone&amp;quot;, which cannot be deleted)&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Name:&#039;&#039;&#039; 35 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Group Title:&#039;&#039;&#039; 20 single-byte characters.&lt;br /&gt;
* &#039;&#039;&#039;Maximum Length of a Group Notice:&#039;&#039;&#039; 512 single-byte characters.&lt;br /&gt;
&lt;br /&gt;
== [[Inventory]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum number of inventory items that can be sent in a folder:&#039;&#039;&#039; 42&lt;br /&gt;
** Folders count as items too. This has more to do with packet size limits than cheeky Douglas Adams references.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard line:&#039;&#039;&#039; None, but scripts can only read the first 255 bytes.&lt;br /&gt;
* &#039;&#039;&#039;Maximum notecard size:&#039;&#039;&#039; 65,536 bytes&lt;br /&gt;
* &#039;&#039;&#039;Number of items in the Library:&#039;&#039;&#039; 1,248 as of 2010-06-17&lt;br /&gt;
** Verified by [[How_does_the_Library_work|hiding the Library]] and counting the difference.&lt;br /&gt;
&lt;br /&gt;
== [[Land]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum [[Land#Parcel|parcel]] size:&#039;&#039;&#039; 65,536 meters²&lt;br /&gt;
** Covering a whole region, or square on the World Map.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel size:&#039;&#039;&#039; 16 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel name length:&#039;&#039;&#039; 63 single-byte characters&lt;br /&gt;
* &#039;&#039;&#039;Maximum parcel description length:&#039;&#039;&#039; 255 characters&lt;br /&gt;
* &#039;&#039;&#039;Region name length:&#039;&#039;&#039; Under Linden Concierge policy, minimum of 3 characters, and a maximum of 25 characters (including spaces). See [[Linden Lab Official:Guidelines for Private Region Naming|Guidelines for Private Region Naming]].&lt;br /&gt;
** Rare exceptions exist, like [http://slurl.com/secondlife/Q/128/128/24 Q].&lt;br /&gt;
* &#039;&#039;&#039;Maximum &amp;quot;NO ENTRY&amp;quot; ban line height:&#039;&#039;&#039; 768 meters above the terrain mesh.&lt;br /&gt;
** This is if you are explicitly banned from a parcel. If the parcel is simply not public access or restricted to certain Residents or a group, then the access lines go up to 50 meters above the terrain mesh.&lt;br /&gt;
* &#039;&#039;&#039;Maximum prims in a [[Land#Region|region]]:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 15,000&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 3,750&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 750&lt;br /&gt;
* &#039;&#039;&#039;Maximum auto return value&#039;&#039;&#039;: Besides &amp;quot;0&amp;quot; (which means &#039;&#039;never&#039;&#039;), {{HoverText|999,999|Almost 23 months}} minutes is the highest auto return value.&lt;br /&gt;
* &#039;&#039;&#039;Terraforming limits:&#039;&#039;&#039;&lt;br /&gt;
** Most mainland can be raised/lowered by 4 meters (+/-).&lt;br /&gt;
** Some mainland cannot be terraformed, including: Bay City Regions, Blumfield, Boardman, Brown, De Haro, Nautilus City Regions, Nova Albion Regions, Shermerville Regions, and West Haven.&lt;br /&gt;
** A few, very old mainland Regions like Da Boom have a terraform range of 40 meters (+/-).&lt;br /&gt;
** Estate (private island) terraformability is settable to a maximum of 100 meters (+/-) by the estate owner or managers.&lt;br /&gt;
* &#039;&#039;&#039;Maximum water height:&#039;&#039;&#039; 100 meters using inworld controls (mainland limit), 255 meters by using a *.raw file upload.&lt;br /&gt;
** Region water height is usually 20 meters, and adjacent regions should have the same water height, or else they will look discontinuous.&lt;br /&gt;
* &#039;&#039;&#039;Maximum terrain height:&#039;&#039;&#039; 255 meters using inworld controls (mainland limit), 510 meters by using a *.raw file upload.&lt;br /&gt;
* &#039;&#039;&#039;Miscellaneous estate limits:&#039;&#039;&#039; You can have a maximum of 10 estate managers, 500 allowed Residents, 63 allowed groups, and 500 banned Residents.&lt;br /&gt;
** See World menu &amp;gt; Region/Estate &amp;gt; Estate tab.&lt;br /&gt;
* &#039;&#039;&#039;Mainland maximum number of agents&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100 (Historically set to 40 by LL but this does vary. Some meeting areas have this set to 60 and higher.)&lt;br /&gt;
*** Recent server performance improvements make regions with 60 agents in them perform quite well excepting the issue described in {{JIRA|SVC-3895}}.&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Island maximum number of agents:&#039;&#039;&#039;&lt;br /&gt;
** Full region: 100&lt;br /&gt;
** [[Land#Homestead|Homestead]]: 20&lt;br /&gt;
** [[Land#Openspace|Openspace]]: 10&lt;br /&gt;
* &#039;&#039;&#039;Freeze Time:&#039;&#039;&#039; Land owners can [[freeze]] other Residents for up to 30 seconds.  Members of land owning groups can also be granted this ability.&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Places or All search:&#039;&#039;&#039; 144 meters² &amp;lt;!-- 128 and under are disabled --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Minimum parcel that can be listed in Events:&#039;&#039;&#039; 512 meters²&lt;br /&gt;
* &#039;&#039;&#039;Maximum altitude for event listings:&#039;&#039;&#039;  768 meters ({{JIRA|WEB-814}})&lt;br /&gt;
* &#039;&#039;&#039;Maximum heights that objects can be seen on the [[World Map]]:&#039;&#039;&#039; 400.005m&lt;br /&gt;
* &#039;&#039;&#039;[[Classic clouds]] layer:&#039;&#039;&#039; Approximately 150-225 meters, although the edges of particles can appear to exceed that.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;[https://secondlife.com/currency/describe-limits.php Billing and Trading Limits]&#039;&#039;&#039; - Includes [https://secondlife.com/whatis/economy-market.php LindeX] currency exchange limits.&lt;br /&gt;
*&#039;&#039;&#039;Contacts in Communication &amp;gt; Friends tab &#039;&#039;&#039; - A maximum of 20 simultaneous contacts can be selected to change permissions, remove, or invite for a conference chat.&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Max Alt.jpg|thumb|right|435px|&#039;&#039;&#039;Height counter error above 2147483647 meters&#039;&#039;&#039;]]&lt;br /&gt;
* &#039;&#039;&#039;Absolute height limit:&#039;&#039;&#039; [http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing 2147483647]&amp;amp;nbsp;=&amp;amp;nbsp;2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;&amp;amp;nbsp;−&amp;amp;nbsp;1 meters, which causes the altitude counter to roll over. Altitudes well below this cause graphics errors probably due to limited floating point number precision.&lt;br /&gt;
* &#039;&#039;&#039;Highest z-value of an [[SLurl]], that will still teleport you to a positive altitude:&#039;&#039;&#039; 2147483583&lt;br /&gt;
** This is lower than the &#039;&#039;Absolute height limit&#039;&#039; above probably because of precision issues. Any value higher than 2147483583 would be rounded up to something beyond 2147483647 and thus cause an [http://en.wikipedia.org/wiki/Arithmetic_overflow overflow], while 2147483583 will still be rounded down to 2147483520 (see below).&lt;br /&gt;
* &#039;&#039;&#039;Highest altitude you can teleport to with an SLurl:&#039;&#039;&#039; 2147483520 meters&lt;br /&gt;
&lt;br /&gt;
== [[Profile]] ==&lt;br /&gt;
&lt;br /&gt;
Each 7-bit ASCII character is encoded in one byte. International characters might need more bytes. When pasting text instead of typing, you can get in one byte more into each of the below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;2nd Life tab&#039;s About field&#039;&#039;&#039; - 510 bytes&lt;br /&gt;
* &#039;&#039;&#039;Picks tab&#039;&#039;&#039; - 10 picks with 1022 bytes each&lt;br /&gt;
* &#039;&#039;&#039;1st Life tab&#039;s Info field&#039;&#039;&#039; - 253 bytes&lt;br /&gt;
* &#039;&#039;&#039;Classified tab&#039;&#039;&#039; - 100 listings with x bytes each&lt;br /&gt;
* &#039;&#039;&#039;My Notes&#039;&#039;&#039; - 1022 bytes&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Healthy Viewer FPS&#039;&#039;&#039; - Generally, FPS above 15 is good. The higher it gets, the smoother. You can check via Help menu &amp;gt; Lag Meter, or for more advanced usage, see View menu &amp;gt; Statistics Bar.&lt;br /&gt;
* &#039;&#039;&#039;Avatar Rendering Cost scores&#039;&#039;&#039; - [[Avatar Rendering Cost|Learn all about it!]]&lt;br /&gt;
&lt;br /&gt;
== [[Scripting]] ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Height at which scripts reactivate on a no-script parcel&#039;&#039;&#039; - 50 m above terrain mesh. Scripted objects that take controls continue to remain active when you fly down or enter a no-script parcel.&lt;br /&gt;
* &#039;&#039;&#039;Maximum height where scripts can run&#039;&#039;&#039; - none, as long as the object remains rezzed or attached.&lt;br /&gt;
* &#039;&#039;&#039;Maximum script source code size&#039;&#039;&#039; - 65536 single byte characters.&lt;br /&gt;
* For specific scripting limits, lookup calls in the &#039;&#039;&#039;[[LSL Portal]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== [[Textures]] ==&lt;br /&gt;
* &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Aspect_ratio Aspect ratios]&#039;&#039;&#039; of profile, place, etc. pictures — all of these were measured at UI size (Edit menu &amp;gt; Preferences &amp;gt; General tab &amp;gt; UI Size) = 1.000:&lt;br /&gt;
&lt;br /&gt;
=== 1.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
(official Viewer up to 1.23.5, most [[Alternate viewers|Third Party Viewers]])&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; All for &amp;quot;Classifieds&amp;quot;, &amp;quot;People&amp;quot;, and &amp;quot;Places&amp;quot;&#039;&#039;&#039; - 4:3 (256&amp;amp;times;192 pi&amp;amp;times;els)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Places and Classified tabs&#039;&#039;&#039; - ~7:5 (398&amp;amp;times;282 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Land tab&#039;&#039;&#039; - ~7:5 (358&amp;amp;times;252 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~4:3 (178&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks tab&#039;&#039;&#039; - 16:9 (288&amp;amp;times;162 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 1st Life tab&#039;&#039;&#039; - 1:1 (133&amp;amp;times;133 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Classifieds tab&#039;&#039;&#039; - ~3:2 (206&amp;amp;times;137 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Web tab&#039;&#039;&#039; - 1:1 (400&amp;amp;times;400 pixels)&lt;br /&gt;
** A scrollbar uses 15 pixels on the right-hand side.&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~3:2 (178&amp;amp;times;117 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Group Information &amp;gt; General tab&#039;s &amp;quot;Group Insignia&amp;quot;&#039;&#039;&#039; - 1:1 (126&amp;amp;times;126 pixels)&lt;br /&gt;
** Some of these textures are shared (for example, Search &amp;gt; All place pages, Search &amp;gt; Places, and About Land &amp;gt; Options use the same image), so you should pick a well-balanced ratio and size.&lt;br /&gt;
** [[Texture_aspect_ratios|Learn how to get correct texture aspect ratios when editing images.]]&lt;br /&gt;
&lt;br /&gt;
=== 2.x Series Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds thumbnail&#039;&#039;&#039; - 4:3 (60&amp;amp;times;45 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded&#039;&#039;&#039; - ~4:3 (252&amp;amp;times;188 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Classifieds expanded &amp;gt; Details&#039;&#039;&#039; - 17:7 (272&amp;amp;times;112 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; People&#039;&#039;&#039; - 4:3 (188&amp;amp;times;141 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide thumbnail&#039;&#039;&#039; - ~4:3 (45&amp;amp;times;34 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Search &amp;gt; Destination Guide expanded&#039;&#039;&#039; - 5:3 (250&amp;amp;times;150 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; 2nd Life tab&#039;&#039;&#039; - ~1:1 (100&amp;amp;times;99 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Picks thumbnail&#039;&#039;&#039; - 8:5 (88&amp;amp;times;55 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Profile &amp;gt; Pick expanded&#039;&#039;&#039; - ~5:3 (285&amp;amp;times;172 pixels)&lt;br /&gt;
* &#039;&#039;&#039;About Land &amp;gt; Options tab&#039;&#039;&#039; - ~20:13 (193&amp;amp;times;125 pixels)&lt;br /&gt;
* &#039;&#039;&#039;Places &amp;gt; More information&#039;&#039;&#039; - ~11:7 (272&amp;amp;times;173 pixels)&lt;br /&gt;
&lt;br /&gt;
=== All Viewers ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Maximum texture size&#039;&#039;&#039; - 1024&amp;amp;times;1024 pixels&lt;br /&gt;
** All Second Life textures are constrained to [http://en.wikipedia.org/wiki/Power_of_2 powers of 2] (e.g., 128, 256, 512).&lt;br /&gt;
** Some textures inworld have a resolution as high as 2048&amp;amp;times;2048; this is due to a previous limit that was higher.&lt;br /&gt;
** We strongly recommend you use as small textures as possible because larger ones consume more memory and take substantially longer to load.&lt;br /&gt;
** Where large textures are being forced by import to only 512&amp;amp;times;512, lower your ...&amp;gt; Preferences &amp;gt;...&amp;gt; UI Size under 1.0, to increase import size to the max 1024&amp;amp;times;1024.&lt;br /&gt;
&lt;br /&gt;
[[Category:Creation]] [[Category:Tutorials]] [[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation/Mesh_Import_User_Group&amp;diff=1150022</id>
		<title>Content Creation/Mesh Import User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation/Mesh_Import_User_Group&amp;diff=1150022"/>
		<updated>2011-08-01T19:31:20Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
Currently topics are focused on anything related to the mesh import project. Feature requests, bug reports, design feedback, questions, comments, or example content are welcome.&lt;br /&gt;
&lt;br /&gt;
Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
{{Navbox/Mesh|project}}&lt;br /&gt;
|date-time= &lt;br /&gt;
Mondays at Noon in Pacific time (SL standard time)&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: &#039;&#039;&#039;July 18, 2011&#039;&#039;&#039; &lt;br /&gt;
|location= &lt;br /&gt;
[secondlife://Aditi/secondlife/MeshHQ%201/214/243/23 Mesh HQ on Aditi]&lt;br /&gt;
&lt;br /&gt;
|team=&lt;br /&gt;
Charlar Linden, Nyx Linden, and Runitai Linden. Please contact one of us if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please add topics below &#039;&#039;&#039;prior to 11:50 AM&#039;&#039;&#039;. Also, please put your SL name down so we can follow up if we have questions. Thanks!&lt;br /&gt;
&lt;br /&gt;
Enter agenda items here (with name, please)&lt;br /&gt;
# Why do mesh objects have a +0.5PE penalty and a +1PE script penalty per object per linkset compared to regular prims which have none? (York Jessop)&lt;br /&gt;
# Can we have both physics and streaming cost displayed somewhere in the edit window?  It was useful to be able to tell which was larger without having to go into the developer menu. (Brookston Holiday)&lt;br /&gt;
# (Perhaps related)When edit linked is checked, the number of prims gets updated in the edit window but the PE of the entire object is still shown.  Is it possible to show the PE contribution of the one prim that has been selected, again without going into developer menu? (Brookston Holiday)&lt;br /&gt;
# What is the hidden agenda (assuming there is one) behind the new dropdown on the uploader that asks what the uploaded model is for? [Drongle McMahon]&lt;br /&gt;
# SH-2044 has been set to fixed, but the automated build at http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/mesh-development/rev/237321/index.html doesn&#039;t seem to have the fix even though it&#039;s listed. It&#039;s likely a mistake on my part, but please confirm whether the fix is in or not in the install. (Raz Welles)&lt;br /&gt;
#I&#039;m having problems getting the streaming cost formula to work. Is this wiki up-to-date? : http://wiki.secondlife.com/wiki/Mesh/Mesh_Streaming_Cost#LOD_Transition_Distances  I read elsewhere that the LOD transition distances have different values now. Also, is &amp;quot;max_area=65536&amp;quot;, &amp;quot;cost_scalar = 0.125&amp;quot; and is &amp;quot;radius = 0.5 * llSqrt(x*x + y*y + z*z)&amp;quot;?  [Ashasekayi Ra]&lt;br /&gt;
#In the streaming cost formula, kbytes for each LOD are listed. Is there a way to approximate that value for ourselves offline since I assume this is a compressed value? [Ashasekayi Ra]&lt;br /&gt;
#You still can&#039;t have textures automatically load with a model exported from Blender 2.49. Is this a known issue? Or, does it need a jira? [Ashasekayi Ra]&lt;br /&gt;
#Adding a script to a linkset that has a PE count lower the the prim count results in rounding up to the prim count and voiding out any efficient mesh models that are below 1 PE in a linsket... why? My example was a 128 prim, 64 PE going up to 130 PE whit a &amp;quot;new script&amp;quot; added... [Moo Spyker]&lt;br /&gt;
#In the modernisation of SL, why has all effeort for new features seemed to be targeted at Mesh? I feel that the biggest immersion killer, and the area where SL is lagging behind other MMOs the most, right now is not having seamless sim crossings, and not being able to traverse the seas. [Davido Chrome]&lt;br /&gt;
#Please can you add to the Loginscreen from the Mesh Cleint Links to the mesh-wiki tips for handle the mesh upload. [bigjr Slade]&lt;br /&gt;
#When can we expect a viewer version that works with lion (macOS 10.7)? [Mikki Miles]&lt;br /&gt;
#Jira CTS-606 is marked as fixed, but it isn&#039;t. I made a comment, but i suspect nobody read it. So, on both my machines, MBP and a recent iMac I get a black screen when I try to display physic shapes, it would really be helpful to have this working [Mikki Miles]&lt;br /&gt;
#How do normal prims and meshes compare in rendering cost? Comparing, say, 1024 prim-based triangles and 1024 mesh-based triangles. [Stickman Ingmann]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|archive=&lt;br /&gt;
{{:Content_Creation,_Mesh_Import_User_Group/Archive}}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Mesh]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Mesh/Troubleshooting&amp;diff=1147194</id>
		<title>Mesh/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Mesh/Troubleshooting&amp;diff=1147194"/>
		<updated>2011-06-21T01:26:12Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* Rigging */ Missing linebreak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{Navbox/Mesh}}&lt;br /&gt;
&lt;br /&gt;
To troubleshoot your model, please make sure your model complies with these guidelines. &lt;br /&gt;
&lt;br /&gt;
If the problem you&#039;re having isn&#039;t covered here, please check the tool-specific pages on [[:Category:Mesh|this wiki]] and the [http://blogs.secondlife.com/community/forums/mesh mesh forum]. &lt;br /&gt;
&lt;br /&gt;
===COLLADA file format===&lt;br /&gt;
We support the COLLADA 1.4 specification.&lt;br /&gt;
&lt;br /&gt;
===Export triangles===&lt;br /&gt;
We support triangles and polygons, not nurbs, surface patches, etc.&lt;br /&gt;
&lt;br /&gt;
===Skin weights===&lt;br /&gt;
We support up to 4 influences per vertex.&lt;br /&gt;
&lt;br /&gt;
===Rigging===&lt;br /&gt;
Your skeleton names and hierarchy must match the [[Avatar_Appearance#Linden_skeleton_definition_file|Second Life avatar skeleton]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The following was pulled directly from the XML file mentioned in the above link. It includes an extra &amp;quot;head&amp;quot; bone (mSkull) which is, I believe, where the avatar&#039;s hair rest and the &amp;quot;skull&amp;quot; attachment point resides, and the mToeLeft and mToeRight bones, which are more than I expected to exist on the foot as I&#039;ve been wanting a toe bone for years. I haven&#039;t tested if these are usable, animating bones yet.&#039;&#039; -[[User:Stickman Ingmann|Stickman]] 18:21, 20 June 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
That is, your skeleton should include the following bones:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Torso and Head&#039;&#039;&#039;&lt;br /&gt;
*mPelvis (root)&lt;br /&gt;
*mTorso (child of mPelvis)&lt;br /&gt;
*mChest (child of mTorso)&lt;br /&gt;
*mNeck (child of mChest)&lt;br /&gt;
*mHead (child of mNeck)&lt;br /&gt;
*mSkull (child of mHead)&lt;br /&gt;
*mEyeRight (child of mHead)&lt;br /&gt;
*mEyeLeft (child of mHead)&lt;br /&gt;
&#039;&#039;&#039;Arms&#039;&#039;&#039;&lt;br /&gt;
*mCollarLeft (child of mChest)&lt;br /&gt;
*mShoulderLeft (child of mCollarLeft)&lt;br /&gt;
*mElbowLeft (child of mShoulderLeft)&lt;br /&gt;
*mWristLeft (child of mElbowLeft)&lt;br /&gt;
*mCollarRight (child of mChest)&lt;br /&gt;
*mShoulderRight (child of mCollarRight)&lt;br /&gt;
*mElbowRight (child of mShoulderRight)&lt;br /&gt;
*mWristRight (child of mElbowRight)&lt;br /&gt;
&#039;&#039;&#039;Legs&#039;&#039;&#039;&lt;br /&gt;
*mHipLeft (child of mPelvis)&lt;br /&gt;
*mKneeLeft (child of mHipLeft)&lt;br /&gt;
*mAnkleLeft (child of mKneeLeft)&lt;br /&gt;
*mFootLeft (child of mAnkleLeft)&lt;br /&gt;
*mToeLeft (child of mFootLeft)&lt;br /&gt;
*mHipRight (child of mPelvis)&lt;br /&gt;
*mKneeRight (child of mHipRight)&lt;br /&gt;
*mAnkleRight (child of mKneeRight)&lt;br /&gt;
*mFootRight (child of mAnkleRight)&lt;br /&gt;
*mToeRight (child of mFootRight)&lt;br /&gt;
&lt;br /&gt;
===Model size===&lt;br /&gt;
If the model you&#039;re importing is too small or too big, please check the unit settings in your modeling software.&lt;br /&gt;
&lt;br /&gt;
===Axis===&lt;br /&gt;
In Second Life, the Z-axis is the vertical axis.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Mesh/Exporting_a_mesh_from_Blender&amp;diff=1147193</id>
		<title>Mesh/Exporting a mesh from Blender</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Mesh/Exporting_a_mesh_from_Blender&amp;diff=1147193"/>
		<updated>2011-06-21T01:25:01Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* Bones and rigging */ Added useful links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{Navbox/Mesh}}&lt;br /&gt;
== Video tutorial ==&lt;br /&gt;
&lt;br /&gt;
Check out this &#039;&#039;&#039;[http://blog.machinimatrix.org/3d-creation/blender-meshes-trail/ 3-part Blender tutorial for static meshes.]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a detailed Blender rigging tutorial here: &#039;&#039;&#039;BlanderMan rigging tutorial [http://vimeo.com/5067809 part 1-1], [http://vimeo.com/5068722 part 1-2], [http://vimeo.com/5070359 part 2]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Simple tube avatar ===&lt;br /&gt;
{{KBvideo|3JHWDdrIeD0|640|505|type=youtube}}&lt;br /&gt;
&lt;br /&gt;
=== Mancandy avatar ===&lt;br /&gt;
{{KBvideo|8w88B7F7v_k|640|505|type=youtube}}&lt;br /&gt;
&lt;br /&gt;
== Basic workflow ==&lt;br /&gt;
=== Create a box (or monkey or teapot or hippo) ===&lt;br /&gt;
=== Reduce polygons ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to reduce the polygon count of your mesh is via the &amp;quot;Poly Reducer&amp;quot; script, accessible via the Mesh -&amp;gt; Scripts -&amp;gt; Poly Reducer. This script reduces the number of polygons in the model without affecting its shape, much like the &amp;quot;Decimate&amp;quot; tool, but also maintains the mesh&#039;s UV mapping.&lt;br /&gt;
&lt;br /&gt;
To quickly and easily produce a set of LOD meshes:&lt;br /&gt;
# Make sure your blender file is saved&lt;br /&gt;
# Export your full-detail mesh to COLLADA&lt;br /&gt;
# Run Poly Reducer with a poly reduce setting of 0.5 (to reduce your polygon count by half).&lt;br /&gt;
#* If you make any manual changes to tweak the resulting mesh, remember to update the UV map to match.&lt;br /&gt;
# Export your mesh to COLLADA; this will be the &amp;quot;medium&amp;quot; level of detail.&lt;br /&gt;
# Reload your original full-detail mesh. It&#039;s good to start from the full-detail mesh each time to prevent errors from accumulating, though this may not be a significant concern for simple meshes such as attachments.&lt;br /&gt;
# Run Poly Reducer with a poly reduce setting of 0.25 (to reduce your polygon count by three quarters).&lt;br /&gt;
# Export your mesh to COLLADA; this will be your &amp;quot;low&amp;quot; level of detail.&lt;br /&gt;
# Reload your original full-detail mesh.&lt;br /&gt;
# Run Poly Reducer with a poly reduce setting of 0.125 (to reduce your polygon count by seven eighths).&lt;br /&gt;
# Export your mesh to COLLADA; this will be your &amp;quot;lowest&amp;quot; level of detail. You may also want to use this mesh when defining your model&#039;s physics.&lt;br /&gt;
&lt;br /&gt;
Unfortunately the Poly Reducer script is currently only available for version 2.4x of Blender. The &amp;quot;Decimate&amp;quot; modifier is a serviceable substitute but the downside is that you&#039;ll need to redo the UV map for each LOD level.&lt;br /&gt;
&lt;br /&gt;
=== Apply textures ===&lt;br /&gt;
=== Scale to meters ===&lt;br /&gt;
Scaling is somewhat arbitrary. In principle you just have to know how the mapping is between your 3D program (Blender) and the target environment (Second Life). Then all you need to do is to work in the correct scale. You even can later rescale your model in your target system.&lt;br /&gt;
&lt;br /&gt;
So, what is the issue with blender ? It is all so simple that the Collada Exporter for blender assumes that one Measurement Unit is mapped to one real life centimeter. But the common expectation in Second Life is that one Measurement Unit is mapped to 1 Second Life Meter. Unfortunately this missmatch very often leads to the import of &amp;quot;tiny objects&amp;quot;. The common fix is to scale up the models in Blender by a factor of 100.&lt;br /&gt;
&lt;br /&gt;
But there is a nicer fix, which adjust the Collada Exporter to behave according to our expectations.&lt;br /&gt;
See this video to find out, how you can fix the Measurement missmatch between Blender-2.49b and Second Life once and for ever:&lt;br /&gt;
&lt;br /&gt;
{{KBvideo|18354783|640|370|type=vimeo}}&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to watch the entire video:&lt;br /&gt;
&lt;br /&gt;
find the file &amp;lt;blender script dir&amp;gt;\bpymodules\colladaImEx\translator.py and change these two lines:&lt;br /&gt;
&lt;br /&gt;
 daeAsset.unit.name = &#039;centimeter&#039;&lt;br /&gt;
 daeAsset.unit.meter = &#039;0.01&#039;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 daeAsset.unit.name = &#039;meter&#039;&lt;br /&gt;
 daeAsset.unit.meter = &#039;1.00&#039;&lt;br /&gt;
&lt;br /&gt;
To find the scripts directory, do Help &amp;gt; System Information in blender, and look in the text file for &amp;quot;Default dir for scripts:&amp;quot;. The path for me is:&lt;br /&gt;
 C:\Documents and Settings\tapple\Application Data\Blender Foundation\Blender\.blender\scripts&lt;br /&gt;
and thus the file is:&lt;br /&gt;
 C:\Documents and Settings\tapple\Application Data\Blender Foundation\Blender\.blender\scripts\bpymodules\colladaImEx\translator.py&lt;br /&gt;
&lt;br /&gt;
=== Export to COLLADA ===&lt;br /&gt;
=== Import to SL ===&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
[http://blogs.secondlife.com/message/460796#41935 Forum thread on optimizing your mesh in Blender for Second Life]&lt;br /&gt;
&lt;br /&gt;
[http://blogs.secondlife.com/message/552002#552002 Forum thread on installing Blender]&lt;br /&gt;
=== Bones and rigging ===&lt;br /&gt;
It&#039;s possible to import one of the default BVH animations that can be found linked in the header of the [[Internal_Animations#User-playable_animations]]. This will get you a slightly inaccurate skeleton to work from.&lt;br /&gt;
&lt;br /&gt;
Please note that the bones are all the wrong names for mesh import, as mentioned in [[Mesh/Troubleshooting#Rigging]].&lt;br /&gt;
&lt;br /&gt;
[http://blogs.secondlife.com/message/534554#52305 Forum tip for exporting joint positions with Blender]&lt;br /&gt;
&lt;br /&gt;
=== Gotchas and workarounds ===&lt;br /&gt;
&lt;br /&gt;
=== Optimization techniques ===&lt;br /&gt;
&lt;br /&gt;
== Tutorial links ==&lt;br /&gt;
  ==  Blender 2.5x specefic ==&lt;br /&gt;
&lt;br /&gt;
http://blog.machinimatrix.org/3d-creation/blender-meshes-trail/&lt;br /&gt;
&lt;br /&gt;
http://blendernewbies.blogspot.com/search/label/Blender%202.5&lt;br /&gt;
&lt;br /&gt;
http://www.blendercookie.com/tag/2-5/&lt;br /&gt;
&lt;br /&gt;
http://www.blenderguru.com/whered-that-button-go/&lt;br /&gt;
&lt;br /&gt;
http://totallyblended.com/New/?page_id=705&lt;br /&gt;
&lt;br /&gt;
http://blendernerd.com/?cat=5&lt;br /&gt;
&lt;br /&gt;
https://sites.google.com/site/satishgoda/blender&lt;br /&gt;
&lt;br /&gt;
http://3d-synthesis.com/tutorialsenglish.html&lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/user/super3boy              (has been updating his tutorials for 2.5)&lt;br /&gt;
&lt;br /&gt;
http://www.katsbits.com/tutorials/index.php&lt;br /&gt;
&lt;br /&gt;
http://cogfilms.com/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.3dbuzz.com/vbforum/showthread.php?188849-Blender-Fundamentals-First-drop-of-videos-now-available-to-the-public&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Mesh/Troubleshooting&amp;diff=1147192</id>
		<title>Mesh/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Mesh/Troubleshooting&amp;diff=1147192"/>
		<updated>2011-06-21T01:21:30Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added the hierarchy skeleton to the page, as found in the XML file.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{Navbox/Mesh}}&lt;br /&gt;
&lt;br /&gt;
To troubleshoot your model, please make sure your model complies with these guidelines. &lt;br /&gt;
&lt;br /&gt;
If the problem you&#039;re having isn&#039;t covered here, please check the tool-specific pages on [[:Category:Mesh|this wiki]] and the [http://blogs.secondlife.com/community/forums/mesh mesh forum]. &lt;br /&gt;
&lt;br /&gt;
===COLLADA file format===&lt;br /&gt;
We support the COLLADA 1.4 specification.&lt;br /&gt;
&lt;br /&gt;
===Export triangles===&lt;br /&gt;
We support triangles and polygons, not nurbs, surface patches, etc.&lt;br /&gt;
&lt;br /&gt;
===Skin weights===&lt;br /&gt;
We support up to 4 influences per vertex.&lt;br /&gt;
&lt;br /&gt;
===Rigging===&lt;br /&gt;
Your skeleton names and hierarchy must match the [[Avatar_Appearance#Linden_skeleton_definition_file|Second Life avatar skeleton]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The following was pulled directly from the XML file mentioned in the above link. It includes an extra &amp;quot;head&amp;quot; bone (mSkull) which is, I believe, where the avatar&#039;s hair rest and the &amp;quot;skull&amp;quot; attachment point resides, and the mToeLeft and mToeRight bones, which are more than I expected to exist on the foot as I&#039;ve been wanting a toe bone for years. I haven&#039;t tested if these are usable, animating bones yet.&#039;&#039; -[[User:Stickman Ingmann|Stickman]] 18:21, 20 June 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
That is, your skeleton should include the following bones:&lt;br /&gt;
&#039;&#039;&#039;Torso and Head&#039;&#039;&#039;&lt;br /&gt;
*mPelvis (root)&lt;br /&gt;
*mTorso (child of mPelvis)&lt;br /&gt;
*mChest (child of mTorso)&lt;br /&gt;
*mNeck (child of mChest)&lt;br /&gt;
*mHead (child of mNeck)&lt;br /&gt;
*mSkull (child of mHead)&lt;br /&gt;
*mEyeRight (child of mHead)&lt;br /&gt;
*mEyeLeft (child of mHead)&lt;br /&gt;
&#039;&#039;&#039;Arms&#039;&#039;&#039;&lt;br /&gt;
*mCollarLeft (child of mChest)&lt;br /&gt;
*mShoulderLeft (child of mCollarLeft)&lt;br /&gt;
*mElbowLeft (child of mShoulderLeft)&lt;br /&gt;
*mWristLeft (child of mElbowLeft)&lt;br /&gt;
*mCollarRight (child of mChest)&lt;br /&gt;
*mShoulderRight (child of mCollarRight)&lt;br /&gt;
*mElbowRight (child of mShoulderRight)&lt;br /&gt;
*mWristRight (child of mElbowRight)&lt;br /&gt;
&#039;&#039;&#039;Legs&#039;&#039;&#039;&lt;br /&gt;
*mHipLeft (child of mPelvis)&lt;br /&gt;
*mKneeLeft (child of mHipLeft)&lt;br /&gt;
*mAnkleLeft (child of mKneeLeft)&lt;br /&gt;
*mFootLeft (child of mAnkleLeft)&lt;br /&gt;
*mToeLeft (child of mFootLeft)&lt;br /&gt;
*mHipRight (child of mPelvis)&lt;br /&gt;
*mKneeRight (child of mHipRight)&lt;br /&gt;
*mAnkleRight (child of mKneeRight)&lt;br /&gt;
*mFootRight (child of mAnkleRight)&lt;br /&gt;
*mToeRight (child of mFootRight)&lt;br /&gt;
&lt;br /&gt;
===Model size===&lt;br /&gt;
If the model you&#039;re importing is too small or too big, please check the unit settings in your modeling software.&lt;br /&gt;
&lt;br /&gt;
===Axis===&lt;br /&gt;
In Second Life, the Z-axis is the vertical axis.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Mesh/Uploading_a_multi-face_mesh&amp;diff=1146962</id>
		<title>Mesh/Uploading a multi-face mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Mesh/Uploading_a_multi-face_mesh&amp;diff=1146962"/>
		<updated>2011-06-18T00:28:46Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Added links to the Blender manual that explain material manipulation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
{{Navbox/Mesh}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[File:MeshWalkthrough-Complex_Mesh_Upload-Splash.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Just as we can texture individual faces of a primitive differently, we can texture individual faces of meshes differently if the mesh has been properly set up for materials before import.&lt;br /&gt;
&lt;br /&gt;
{{KBvideo|qorvd6KJSuE|640|505|type=youtube}}&lt;br /&gt;
&lt;br /&gt;
== Adding Materials With Your 3D Program ==&lt;br /&gt;
To add Materials in Blender, refer to these two pages in the Blender Manual regarding creating/adding materials, and applying multiple materials to a model.&lt;br /&gt;
* http://wiki.blender.org/index.php/Doc:2.5/Manual/Materials/Options&lt;br /&gt;
* http://wiki.blender.org/index.php/Doc:2.5/Manual/Materials/Multiple_Materials&lt;br /&gt;
&lt;br /&gt;
== Get a Second Life compatible mesh file ==&lt;br /&gt;
The first step is to get a multi-face mesh file that you want to upload to Second Life.  Second Life&#039;s mesh import is able to read [https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema COLLADA] (&amp;quot;&#039;&#039;.dae&#039;&#039;&amp;quot;) files.&lt;br /&gt;
# Click this link -- https://collada.org/owl/download.php?sess=0&amp;amp;parent=131&amp;amp;expand=1&amp;amp;order=name&amp;amp;curview=0&amp;amp;binary=1&amp;amp;id=707 -- to download the &amp;quot;&#039;&#039;seymour.dae&#039;&#039;&amp;quot; COLLADA file.&lt;br /&gt;
# Save the file anywhere on your hard drive where you can find it later.&lt;br /&gt;
&lt;br /&gt;
== Upload the mesh file to Second Life ==&lt;br /&gt;
[[File:Mesh_upload_model_seymour.png|300px|thumb|Upload Model window]]&lt;br /&gt;
Upload the mesh file from your computer to Second Life:&lt;br /&gt;
# Select &#039;&#039;&#039;Build&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Upload&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Model&#039;&#039;&#039; from the menu at the top of the Second Life Viewer.&lt;br /&gt;
#: Alternatively, open &#039;&#039;&#039;My Inventory&#039;&#039;&#039;, click the &#039;&#039;&#039;+&#039;&#039;&#039; button, and select &#039;&#039;&#039;Upload&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Model&#039;&#039;&#039;.&lt;br /&gt;
#: A file upload window opens.&lt;br /&gt;
# Find and select the &amp;lt;code&amp;gt;seymour.dae&amp;lt;/code&amp;gt; file from your computer.&lt;br /&gt;
#: The Upload Model window appears.&lt;br /&gt;
# Enter a name for your model in the &#039;&#039;&#039;Name&#039;&#039;&#039; field.&lt;br /&gt;
# Click the &#039;&#039;&#039;Upload&#039;&#039;&#039; button.&lt;br /&gt;
#: Two new assets appear in your inventory: one in your &#039;&#039;&#039;Meshes&#039;&#039;&#039; folder, the other in your &#039;&#039;&#039;Objects&#039;&#039;&#039; folder.&lt;br /&gt;
#: For the seymour object, these new assets are named &#039;&#039;&#039;boyShape&#039;&#039;&#039;.&lt;br /&gt;
#: Note: In this tutorial, we only care about the asset in your &#039;&#039;&#039;Object&#039;&#039;&#039; folder.&lt;br /&gt;
{{Warning|While the Seymour asset does contain a rig, it is incompatible with the current Mesh Project Viewer code. If you enable &#039;&#039;&#039;Skin Weight&#039;&#039;&#039;, Seymour&#039;s skin will be generated incorrectly. You&#039;ll see the incorrect behavior in the tool preview window, and if uploaded, you&#039;ll see a group of large flickering triangles inworld.}}&lt;br /&gt;
&lt;br /&gt;
== Add your mesh object to the world and edit it ==&lt;br /&gt;
[[Image:MeshWalkthrough-Complex Mesh Upload-Edit Face.png|right|300px|thumb|Edit goggle color]]&lt;br /&gt;
You can now manipulate your mesh as if it were any other object in your inventory:&lt;br /&gt;
# Find your &#039;&#039;&#039;boyShape&#039;&#039;&#039; object in your &#039;&#039;&#039;Objects&#039;&#039;&#039; folder; if you&#039;re having trouble or have a large inventory, use your inventory&#039;s &#039;&#039;&#039;RECENT&#039;&#039;&#039; tab.&lt;br /&gt;
# Drag the new object from your &#039;&#039;&#039;Objects&#039;&#039;&#039; folder to anywhere on the ground where you have permissions to build.&lt;br /&gt;
#: The model appears on the ground.&lt;br /&gt;
# Right-click the model and select &#039;&#039;&#039;Edit&#039;&#039;&#039;.&lt;br /&gt;
#: The Edit Object window appears.&lt;br /&gt;
# Click the &#039;&#039;&#039;Select Face&#039;&#039;&#039; radio button.&lt;br /&gt;
# Left-click the goggle lenses of the model.&lt;br /&gt;
# Click the color swatch in the Texture tab and change the color, or click the texture swatch and change the texture.&lt;br /&gt;
# Add color and/or textures to other parts of the model (gloves, goggle frame, face, or cap) in the same way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continue on to &#039;&#039;&#039;[[Mesh/Uploading and wearing a rigged mesh|Uploading and wearing a rigged mesh]]&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1146298</id>
		<title>Content Creation, Mesh Import, Scripting User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1146298"/>
		<updated>2011-06-13T19:14:40Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
Although the header says &amp;quot;Content Creation/Mesh Import/Scripting&amp;quot;, currently topics are focused on anything related to the mesh import project. Feature requests, bug reports, design feedback, questions, comments, or example content are welcome.&lt;br /&gt;
&lt;br /&gt;
Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. &lt;br /&gt;
&lt;br /&gt;
|date-time= &lt;br /&gt;
Mondays at Noon in Pacific time (SL standard time)&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: &#039;&#039;&#039;June 13, 2011&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|location= &lt;br /&gt;
[secondlife://Aditi/secondlife/MeshHQ%201/251/250/24 Mesh HQ on Aditi]&lt;br /&gt;
|team=&lt;br /&gt;
Charlar Linden, Nyx Linden, and Runitai Linden. Please contact one of us if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please add topics below &#039;&#039;&#039;prior to 11:50 AM&#039;&#039;&#039;. Also, please put your SL name down so we can follow up if we have questions. Thanks!&lt;br /&gt;
# I thought the decision to limit mesh uploads to payment info on file/used was discussed and shot down a long time back during the closed beta days. Why has it returned all of a sudden as a near-certainty? (Tiberious Neruda)&lt;br /&gt;
# It seems there are upload issues with specific Collada files. Namely, Collada v1.4.0 is ok, but the newer v1.4.1 files (as outputted from i.e. 3dsMax2012) show problems. (Forum post at http://community.secondlife.com/t5/Mesh/Collada-Version-Supported/m-p/923127 ).  Therefore which Collada version(s), XML tags, or 3D programs are *supported* by the Second Life model importer? Supported = if it doesn&#039;t work, you will treat it as a bug in the importer. (DanielRavenNest Noe)&lt;br /&gt;
# An extra complication of the above issue remains the one described at JIRA CTS-603 which particularly seems to hit Maya users, even when the collada output is 1.4.0 (Maya 2011 with FBX 2011.x), due to the way the materials are handled with it. The viewer still ignores material names but sticks to the order that they are written in each LOD Collada file, resulting in jumbled materials. (Angel Alphaville)&lt;br /&gt;
# To expand on the above issues, the proper question is not whether we should waste time with specific programs (as put in the forum), but whether the 3D builder demographics are restricted strictly to Blender users or not. &amp;quot;Blender&amp;quot; is the most frequently written word in the forum as if it&#039;s the start and end of 3D software (which is not the case). (Angel Alphaville)&lt;br /&gt;
# Please update us on offset pivots, AssetPivot and potential use of &amp;lt;geometry&amp;gt; origin. [Drongle McMahon]&lt;br /&gt;
# Is it still true that a vertex can be assigned to a max of 4 groups? [Ashasekayi Ra]&lt;br /&gt;
# I&#039;m still having an issue with the uploader closing the opening on an arch when Step 1: Analysis and Step 2: Simplification are used.  http://community.secondlife.com/t5/Mesh/Physics-Uploader-Closing-Holes/td-p/924041  So, do I need to use Step 1 and Step 2 if the physics mesh that I created is low poly to begin with? (In this arch example, the physics mesh had 16 triangles.) Does the hull generated after Step 1 and 2 somehow make the physics shape more efficient? [Ashasekayi Ra]&lt;br /&gt;
#If I wanted to get the most accurate idea of how many prims a mesh object converts to, do I look at the &amp;quot;selection streaming cost&amp;quot; number under &amp;quot;Show Render Info&amp;quot;? [Ashasekayi Ra]&lt;br /&gt;
# Can you please update us on recent progress and tell us what your current priorities are? [Vivienne Daguerre]&lt;br /&gt;
# Is there anything in particular you need us to focus our testing on? [Vivienne Daguerre]&lt;br /&gt;
# In the recent and current mesh viewer, when I enable lighting and shadow my screen goes black. I can see things like the minimap and hovertext above my avatar, but HUD textures are messed up. I am using 2 ATI 5870 video cards in my Alienware laptop. Anyone else having this problem? The development viewer works just fine for me. Should I file a jira or are you aware of this issue? [Vivienne Daguerre]&lt;br /&gt;
# the black screen appears on my screen also when i set full screen (30&#039;&#039;). When i make it smaller, the scene reappears. [Gaia]&lt;br /&gt;
# Why are slm files binary ? And does it make sense to get a generateable XML file instead to prepare for easy (scripted) support from 3D editors? See [[https://jira.secondlife.com/browse/CTS-634 CTS-634]]﻿ [Gaia]&lt;br /&gt;
# Is there documentation in laymen&#039;s terms yet? [Eleanora Newell]&lt;br /&gt;
# Is there a repository of videos on mesh techniques?  I know Gaia is working on some thngs?  I am looking specifically for information on offsetting bones for avatars that are micro and not human. [Eleanora Newell]&lt;br /&gt;
# Is there a matrix of what actually last known to be working build download works on which beta region?&lt;br /&gt;
# Recently Richard Linden marked http://jira.secondlife.com/browse/VWR-2242 as &amp;quot;fixed&amp;quot; but provided no information. Is this mesh related, or do I need to bug Andrew and Simon about it tomorrow to see if they have an answer? -[[User:Stickman Ingmann|Stickman]] 12:14, 13 June 2011 (PDT)&lt;br /&gt;
# please add your agenda items here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|archive=&lt;br /&gt;
* [[Content Creation, Mesh Import, Scripting User Group/Archive]]&lt;br /&gt;
*   [[User:Nyx_Linden/Mesh_Office_Hours_Agenda_Archive|Older archives]]&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Mesh]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Face&amp;diff=1144571</id>
		<title>Face</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Face&amp;diff=1144571"/>
		<updated>2011-05-26T21:59:37Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: fixed bad emphasis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Object=*}}&lt;br /&gt;
A [[prim]] has one or more &#039;&#039;&#039;faces&#039;&#039;&#039; (or &#039;&#039;&#039;sides&#039;&#039;&#039;) depending on its basic shape and shape parameters. Each face of a prim can have its own [[texture]] properties, [[color]], [[alpha]], and attributes ([[shiny]], [[full-bright]], and [[bump-map]]). The texture properties that each face can have are: texture, texture map (standard or planar), scale, offset, and [[rotation]]. The properties of a prim face can be changed individually by using its face number or all of the prim faces can be modified at once using the &amp;lt;tt&amp;gt;[[ALL_SIDES]]&amp;lt;/tt&amp;gt; face number. &lt;br /&gt;
&lt;br /&gt;
Prims are formed by moving a circle, triangle, or square through a path in 3D space. For boxes, prisms, and cylinders the path is a line. For tori, rings, and tubes the path is a circle. For a sphere the path is rotation of a half-circle around a point. A circle (or half-circle) defines one face along its path, a triangle defines three faces along its path, and a square defines four faces along its path. The interior face of a hollow prim is always one face, even if the hollow shape is a triangle or a square.&lt;br /&gt;
&lt;br /&gt;
===Using the face list table===&lt;br /&gt;
The following table lists all of the possible faces for the eight different prim types and the rule for whether a particular face exists. A given prim will have some subset of this list depending on its shape parameters. The face number of a prim face is determined by its position in the face list after non-existent faces have been removed. The first face in the list that exists will be face zero, the next existing face will be face one, and so on. The positions of the faces listed in the table are in the local coordinate space of the prim, assuming no twist. If beginning twist or end twist is non-zero then some faces will rotate with respect to the prim&#039;s local coordinate space.&lt;br /&gt;
&lt;br /&gt;
{|  {{prettytable}}&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_CYLINDER|Cylinder]]&#039;&#039;&#039; &lt;br /&gt;
* top (+z) &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* outside &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* bottom (-z) &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
* path cut end &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_TORUS|Torus]]&#039;&#039;&#039; &lt;br /&gt;
* path cut end &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* outside &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* profile cut begin &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
* profile cut end &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_SPHERE|Sphere]]&#039;&#039;&#039; &lt;br /&gt;
* path cut end &#039;&#039;if path cut or twisted&#039;&#039;&lt;br /&gt;
* outside &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path cut or twisted&#039;&#039;&lt;br /&gt;
* dimple begin &#039;&#039;if dimpled or hollow&#039;&#039;&lt;br /&gt;
* dimple end &#039;&#039;if dimpled or hollow&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_PRISM|Prism]]&#039;&#039;&#039; &lt;br /&gt;
* top (+z) &#039;&#039;always exists&#039;&#039; &lt;br /&gt;
* +y &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* -x &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* -y &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* bottom (-z) &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
* path cut end &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_RING|Ring]]&#039;&#039;&#039; &lt;br /&gt;
* path cut end &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* inside face &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* +x &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* outside face &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* profile cut begin &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
* profile cut end &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_BOX|Box]]&#039;&#039;&#039; &lt;br /&gt;
* top (+z) &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* -y &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* +x &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* +y &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* -x &#039;&#039;unless path cut away&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* bottom (-z) &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
* path cut end &#039;&#039;if path cut&#039;&#039;&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_TUBE|Tube]]&#039;&#039;&#039; &lt;br /&gt;
* path cut end &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* outside face &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* -x &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* inside face &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* +x &#039;&#039;unless profile cut away&#039;&#039;&lt;br /&gt;
* hollow &#039;&#039;if hollow&#039;&#039;&lt;br /&gt;
* path cut begin &#039;&#039;if path is cut or broken&#039;&#039;&lt;br /&gt;
* profile cut begin &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
* profile cut end &#039;&#039;if profile cut&#039;&#039;&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|| &#039;&#039;&#039;[[PRIM_TYPE_SCULPT|Sculpted]]&#039;&#039;&#039;&lt;br /&gt;
* outside &#039;&#039;always exists&#039;&#039;&lt;br /&gt;
||&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here are the face existence rules in greater detail:&lt;br /&gt;
* The outside face always exists on circle derived prims (sphere, cylinder, and torus)&lt;br /&gt;
* The top and bottom faces always exist on line path prims (cylinder, prism, and box)&lt;br /&gt;
* Both path cut faces exist if path cut begin &amp;amp;gt; 0 or path cut end &amp;amp;lt; 1&lt;br /&gt;
* Both path cut faces exist on circular path prims (torus, ring, and tube) if the circular path is broken: path cut, skewed, begin twist &amp;amp;ne; end twist, radius delta &amp;amp;ne; 0, revolutions &amp;amp;gt; 1, or taper parameters &amp;amp;ne; 0&lt;br /&gt;
** &#039;&#039;even if begin twist &amp;amp;equiv; end twist &#039;&#039;mod&#039;&#039; 360&#039;&#039;&lt;br /&gt;
* Both path cut faces exist on sphere prims if begin twist &amp;amp;ne; end twist (even if &amp;amp;equiv; &#039;&#039;mod&#039;&#039; 360)&lt;br /&gt;
* Both sphere dimple faces exist if either dimple begin &amp;amp;gt; 0 or dimple end &amp;amp;lt; 1 or hollow &amp;amp;gt; 0&lt;br /&gt;
** &#039;&#039;even if you can&#039;t see the dimple face because dimple begin = 0 or dimple end = 1, it exists and can have its parameters set&#039;&#039;&lt;br /&gt;
* The hollow face only exists if hollow &amp;amp;gt; 0&lt;br /&gt;
* Both profile cut faces exist if profile cut begin &amp;amp;gt; 0 or profile cut end &amp;amp;lt; 1&lt;br /&gt;
* If the path cut of a prism or box completely eliminates a face then that face doesn&#039;t exist&lt;br /&gt;
* If the profile cut of a ring or tube completely eliminates a face then that face doesn&#039;t exist&lt;br /&gt;
* A face &#039;&#039;still exists&#039;&#039; even if it is shrunk all the way to a line or a point by the taper parameters&lt;br /&gt;
&lt;br /&gt;
==== An example ====&lt;br /&gt;
If you have a box prim that has a path cut beginning of 0.30, a path cut ending of 1.00, and no hollow then your face list looks like this:&lt;br /&gt;
{|&lt;br /&gt;
{{LSL DefineRow|top (+z)|&#039;&#039;always exists&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|-y|&#039;&#039;doesn&#039;t exist because the path cut beginning is &amp;amp;ge; 0.25&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|+x|&#039;&#039;exists&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|+y|&#039;&#039;exists&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|-x|&#039;&#039;exists&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|hollow|&#039;&#039;doesn&#039;t exist because the hollow parameter is 0&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|bottom (-z)|&#039;&#039;always exists&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|path cut begin|&#039;&#039;exists because path cut beginning &amp;amp;gt; 0&#039;&#039;}}&lt;br /&gt;
{{LSL DefineRow|path cut end|&#039;&#039;exists because path cut beginning &amp;amp;gt; 0&#039;&#039;}}&lt;br /&gt;
|}&lt;br /&gt;
So the face numbering for this prim is:&lt;br /&gt;
{|  {{prettytable}}&lt;br /&gt;
| 0 || top (+z) &lt;br /&gt;
|-&lt;br /&gt;
| 1 || +x &lt;br /&gt;
|-&lt;br /&gt;
| 2 || +y &lt;br /&gt;
|-&lt;br /&gt;
| 3 || -x &lt;br /&gt;
|-&lt;br /&gt;
| 4 || bottom (-z) &lt;br /&gt;
|-&lt;br /&gt;
| 5 || path cut begin &lt;br /&gt;
|-&lt;br /&gt;
| 6 || path cut end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Finding the value of a face===&lt;br /&gt;
If you are unsure about which face number to use, following these steps will give you the face number to use.&lt;br /&gt;
&lt;br /&gt;
* Enable the Develop menu by pressing {{K|Ctrl|Alt|Q}}. (On version 1.x viewers, instead enable the [[Advanced menu]] by pressing {{K|Ctrl|Alt|D}}.)&lt;br /&gt;
* Select the Face Using the &amp;quot;Select Texture&amp;quot; Tool&lt;br /&gt;
* Pick Develop &amp;gt; Rendering &amp;gt; Selected Texture Info from the menu, or press {{K|Ctrl|Alt|Shift|T}}&lt;br /&gt;
&lt;br /&gt;
The face number will be shown in your local chat window.&lt;br /&gt;
[[Category:LSL Face| ]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1142944</id>
		<title>Content Creation, Mesh Import, Scripting User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1142944"/>
		<updated>2011-05-09T18:03:51Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
Although the header says &amp;quot;Content Creation/Mesh Import/Scripting&amp;quot;, currently topics are focused on anything related to the mesh import project. Feature requests, bug reports, design feedback, questions, comments, or example content are welcome.&lt;br /&gt;
&lt;br /&gt;
Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. &lt;br /&gt;
&lt;br /&gt;
|date-time= &lt;br /&gt;
Mondays at 11 AM in Pacific time (SL standard time)&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: &#039;&#039;&#039;May 9, 2011&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|location= &lt;br /&gt;
[secondlife://Aditi/secondlife/MeshHQ%201/251/250/24 Mesh HQ on Aditi]&lt;br /&gt;
|team=&lt;br /&gt;
Charlar Linden, Nyx Linden, and Runitai Linden. Please contact one of us if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please add topics below &#039;&#039;&#039;prior to 10:50 AM&#039;&#039;&#039;. Also, please put your SL name down so we can follow up if we have questions. Thanks!&lt;br /&gt;
# New Usergroup time, starting next week! [Nyx Linden]&lt;br /&gt;
# Can you explain how undecomposed prim-type physics shapes are made? In physics shape display I see one-sided surfaces, missing sides of solids, and small small features absent. Decomposed surfaces are 2-sided. [Drongle McMahon]&lt;br /&gt;
# Can you update us on recent progress and tell us what your current priorities are? [Vivienne Daguerre]&lt;br /&gt;
# Is there anything in particular you need us to test? [Vivienne Daguerre]&lt;br /&gt;
# Please give an update on re-adding bone length recognition to the importer.&lt;br /&gt;
# Why do some cts jiras get spirited off into Shining, leaving no trace in cts? [Drongle]&lt;br /&gt;
# Will LL support or quash the XML hack that allows sculpties to have texture faces? [Bloodsong Termagant]&lt;br /&gt;
# I am working on rideables.  If one mesh leg costs about 20 prims, and at least 6 alpha iterations are needed to animate each of the 4 legs, that would be 480 prims for the legs alone (and not account for the body, head, neck, and all those flexiprims needed for manes and tails).  While scripts are happy, because each mesh object is one link in a set, and avatars don&#039;t care because they don&#039;t (yet) have a prim limit on what they can wear; wouldn&#039;t such a mesh rideable cause a huge amount of prim lag?  Should I shelve this project, at least until/unless independantly rigged animated mesh items are supported?  If independantly rigged meshes are introduced at some later date, will they still work when worn by an avatar (and not try to glom onto the avatar&#039;s armature)? [Bloodsong Termagant]&lt;br /&gt;
#The AssetPivot solution does not work predictably for Blender users, and Prep Linden mentioned adding an option to just recognize the regular pivot point assigned to an object in the modeler. Has this option been added? If not, will it be added before the initial mesh release? [Ashasekayi Ra]&lt;br /&gt;
#Have you reconsidered allowing non-animation UUID swapping for meshes yet? -[[User:Stickman Ingmann|Stickman]] 11:03, 9 May 2011 (PDT)&lt;br /&gt;
# please add your agenda items here&lt;br /&gt;
&lt;br /&gt;
|archive=&lt;br /&gt;
* [[Content Creation, Mesh Import, Scripting User Group/Archive]]&lt;br /&gt;
*   [[User:Nyx_Linden/Mesh_Office_Hours_Agenda_Archive|Older archives]]&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Mesh]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlWhisper&amp;diff=1141558</id>
		<title>LlWhisper</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlWhisper&amp;diff=1141558"/>
		<updated>2011-04-23T00:07:52Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Testing shows the limit is 1023 bytes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/chat|channel|msg}}{{LSL_Function&lt;br /&gt;
|func_id=22&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llWhisper&lt;br /&gt;
|sort=Whisper&lt;br /&gt;
|p1_type=integer|p1_name=channel&lt;br /&gt;
|p2_type=string|p2_name=msg&lt;br /&gt;
|func_desc=Whispers the text supplied in string &#039;&#039;&#039;msg&#039;&#039;&#039; on channel supplied in integer &#039;&#039;&#039;channel&#039;&#039;&#039;.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|constants&lt;br /&gt;
|caveats=*Text can only be a maximum of 1023 bytes.&lt;br /&gt;
*Whispers can only be heard within 10 meters of the speaking prim (rather than the root). This is contrary to how [[listen]]s work, where a message can only be heard by any prim in the object if and only if the root prim is capable of hearing it.&lt;br /&gt;
*A prim can &#039;&#039;&#039;not&#039;&#039;&#039; hear itself, to prevent problems with recursion.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llWhisper(0,&amp;quot;This is an incredibly useless program.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
For communicating with the user or owner it is much better to use [[llDialog]], [[llOwnerSay]] or [[llInstantMessage]] as they won&#039;t spam other users.&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events={{LSL DefineRow||[[listen]]|}}&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|}}&lt;br /&gt;
|also&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlShout&amp;diff=1141557</id>
		<title>LlShout</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlShout&amp;diff=1141557"/>
		<updated>2011-04-23T00:07:47Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Testing shows the limit is 1023 bytes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/chat|channel|msg}}{{LSL_Function&lt;br /&gt;
|func_id=24&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llShout&lt;br /&gt;
|sort=Shout&lt;br /&gt;
|p1_type=integer|p1_name=channel&lt;br /&gt;
|p2_type=string|p2_name=msg&lt;br /&gt;
|func_desc=Shouts the text supplied in string &#039;&#039;&#039;msg&#039;&#039;&#039; on channel supplied in integer &#039;&#039;&#039;channel&#039;&#039;&#039;.&lt;br /&gt;
|spec&lt;br /&gt;
|constants&lt;br /&gt;
|caveats=*Text can only be a maximum of 1023 bytes.&lt;br /&gt;
*Shouts can only be heard within 100 meters of the speaking prim (rather than the root). This is contrary to how [[listen]]s work, where a message can only be heard by any prim in the object if and only if the root prim is capable of hearing it.&lt;br /&gt;
*A prim can &#039;&#039;&#039;not&#039;&#039;&#039; hear itself, to prevent problems with recursion.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llShout(0,&amp;quot;This is an incredibly useless program!&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
For communicating with the user or owner it is much better to use [[llDialog]], [[llOwnerSay]] or [[llInstantMessage]] as they won&#039;t spam other users.&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events={{LSL DefineRow||[[listen]]|}}&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlInstantMessage&amp;diff=1141555</id>
		<title>LlInstantMessage</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlInstantMessage&amp;diff=1141555"/>
		<updated>2011-04-23T00:01:57Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: [17:01]  Andrew Linden: llInstantMessage was built to fit within one UDP packet (1.5kB)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Issues/SVC-92}}{{LSL_Function/avatar|user}}{{LSL_Function&lt;br /&gt;
|func_id=118|func_sleep=2.0|func_energy=10.0&lt;br /&gt;
|func=llInstantMessage&lt;br /&gt;
|p1_type=key|p1_name=user|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=message|p2_desc&lt;br /&gt;
|func_desc=Sends an Instant Message specified in the string &#039;&#039;&#039;message&#039;&#039;&#039; to the user specified by &#039;&#039;&#039;key&#039;&#039;&#039;.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=**For applications where this is problematic, it&#039;s possible to place the call to llInstantMessage in a child script and pass the information to that script via [[llMessageLinked]].&lt;br /&gt;
*&#039;&#039;&#039;message&#039;&#039;&#039; will be truncated if it exceeds 1199 bytes.&lt;br /&gt;
*&#039;&#039;&#039;message&#039;&#039;&#039; will appear in the chat window and will not logged by the InstantMessage logging facility. (If a the specified user is not signed it, the messages will be delivered to their email just like a regular instant message, if the user has enabled email for their account.)&lt;br /&gt;
|examples=Tell the owner somebody touched the object:&lt;br /&gt;
&amp;lt;lsl&amp;gt;// This particular example is for demonstration only.&lt;br /&gt;
// Use llOwnerSay() for the same functionality, in case the owner is known to be in the same Region.&lt;br /&gt;
&lt;br /&gt;
key owner;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        owner=llGetOwner();  // get the key of the objects owner.&lt;br /&gt;
    }&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(owner,llKey2Name(owner)+&amp;quot;, &amp;quot; + (string)total_num +&amp;quot; Avatar(s) touched me!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Send a confirmation to the Avatar that touches an object without spamming other Avatars:&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(llDetectedKey(0),&amp;quot;You have been registered!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_events&lt;br /&gt;
|notes=Instant Messaging has the benefit of allowing communication from an object to an avatar anywhere in the Grid. The downside is that an object cannot receive an Instant Message, therefore an avatar cannot send an Instant Message to an object. It&#039;s a one-way communication avenue. Also, the two-second script delay can be considered a downside in some applications.&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Instant Message&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSay&amp;diff=1141553</id>
		<title>LlSay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSay&amp;diff=1141553"/>
		<updated>2011-04-22T23:56:53Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: 1023 is the maximum determined by testing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/chat|channel|msg}}{{LSL_Function&lt;br /&gt;
|func_id=23&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llSay&lt;br /&gt;
|sort=Say&lt;br /&gt;
|p1_type=integer|p1_name=channel&lt;br /&gt;
|p2_type=string|p2_name=msg&lt;br /&gt;
|func_desc=Says the text supplied in string &#039;&#039;&#039;msg&#039;&#039;&#039; on channel supplied in integer &#039;&#039;&#039;channel&#039;&#039;&#039;.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|constants&lt;br /&gt;
|caveats=&lt;br /&gt;
*Text spoken can only be heard within 20 meters of the speaking prim (rather than the root). This is contrary to how the event [[listen]] works, where a message can only be heard by any prim in the object if and only if the root prim is capable of hearing it.&lt;br /&gt;
*Text can only be a maximum of 1023 bytes.&lt;br /&gt;
*A prim cannot hear itself, to prevent problems with recursion.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0,&amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
To avoid making your object spam its neighborhood, use [[llInstantMessage]] or [[llOwnerSay]].&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[listen]]&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;|Receives chat}}&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|Ask for listen events}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|Sends chat to the owner only (or to some other user only) to avoid spamming the {{#var:PUBLIC_CHANNEL}}}}&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|Sends chat to the owner only to avoid spamming the PUBLIC_CHANNEL}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles={{LSL DefineRow||[[Hello Avatar]]}}&lt;br /&gt;
|notes=&lt;br /&gt;
* Channel {{HoverText|0|Zero}} is the {{#var:PUBLIC_CHANNEL}}. Everyone can hear chat transmitted on this channel. All other channels are private channels (not sent to users, with the exception of {{#var:DEBUG_CHANNEL}}).&lt;br /&gt;
* Consider using llInstantMessage, llOwnerSay, or the {{#var:DEBUG_CHANNEL}} for debugging purposes. If {{#var:DEBUG_CHANNEL}} is used as &#039;&#039;&#039;channel&#039;&#039;&#039;, the script will say &#039;&#039;&#039;msg&#039;&#039;&#039; to the Script Warning/Error window. &lt;br /&gt;
* If one object &#039;says&#039; something to another object (&#039;&#039;e.g&#039;&#039;., a button that, when touched, turns on a lamp), it is a good idea to use a very negative channel, &#039;&#039;e.g.&#039;&#039;,&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
    llSay(-5243212,&amp;quot;turn on&amp;quot;);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Negative channels are popular for script communications because the client is unable to chat directly on those channels (&amp;quot;/-xxxx message&amp;quot; won&#039;t chat &amp;quot;message&amp;quot; on channel &amp;quot;-xxxx&amp;quot;, it will chat &amp;quot;/-xxxx message&amp;quot; on channel zero). The only way to do so prior to [[llTextBox]] was to use [[llDialog]] which was limited to 24 bytes.&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlOwnerSay&amp;diff=1141552</id>
		<title>LlOwnerSay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlOwnerSay&amp;diff=1141552"/>
		<updated>2011-04-22T23:56:15Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: 1023 is the maximum determined by testing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/limits}}{{LSL_Function&lt;br /&gt;
|func_id=292|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llOwnerSay|p1_type=string|p1_name=msg&lt;br /&gt;
|func_desc=Says &#039;&#039;&#039;msg&#039;&#039;&#039; to the owner only.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
* If &#039;&#039;&#039;msg&#039;&#039;&#039; is longer than 1023 bytes, it will be truncated to 1023 bytes.&lt;br /&gt;
* Silently fails ~45 seconds after the owner leaves the region the object is in.&lt;br /&gt;
* Silently fails when the object to which the script is attached is [[deed]]ed to a group.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Ouch!&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt; //-- llOwnerSay extension for preventing silent failures&lt;br /&gt;
 //-- paste this code at the top of the script and replace&lt;br /&gt;
 //--  any calls to llOwnerSay below it with uOwnerSayPlus&lt;br /&gt;
uOwnerSayPlus( string vStrMsg ){&lt;br /&gt;
	key owner = llGetOwner();&lt;br /&gt;
	if (llKey2Name( owner )){&lt;br /&gt;
		llOwnerSay( vStrMsg ); //-- single owner that the region still has a handle for&lt;br /&gt;
	}else if (llList2Key( llGetObjectDetails( llGetKey(), [OBJECT_GROUP] ), 0 ) == owner){&lt;br /&gt;
		llWhisper( 0, &amp;quot;/me : &amp;quot; +vStrMsg ); //-- group owned, must send the message publicly&lt;br /&gt;
	}else{&lt;br /&gt;
		llInstantMessage( owner, vStrMsg ); //-- single owner, not present, send them an IM&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_tests=&lt;br /&gt;
{{LSL DefineRow|[[llOwnerSay Test]]|}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Ama_Omega/archive/office_hour_topics&amp;diff=1139868</id>
		<title>User:Ama Omega/archive/office hour topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Ama_Omega/archive/office_hour_topics&amp;diff=1139868"/>
		<updated>2011-04-11T01:11:03Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* Suggested Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add any topics you want to discuss at the next general scripting office hours below.&lt;br /&gt;
&lt;br /&gt;
===Standing Topics===&lt;br /&gt;
* Updates on any scripting projects&lt;br /&gt;
&lt;br /&gt;
===Suggested Topics===&lt;br /&gt;
*Should https://jira.secondlife.com/browse/SVC-4011 be closed as fixed? [[User:Stickman Ingmann|Stickman]] 18:11, 10 April 2011 (PDT)&lt;br /&gt;
&lt;br /&gt;
===Previously Discussed Topics===&lt;br /&gt;
====&#039;&#039;Discussed at [[User:Kelly_Linden/Office Hours/2010-11-08 | 2010-11-08 DISCUSSION]]&#039;&#039;====&lt;br /&gt;
* [[Talk:LSL Useful Function WishList#backwards-compatible ways to save typing or be more like C or Javascript]] (please see for discussion of merits): &lt;br /&gt;
**(1) compound declarations, &amp;quot;integer i, j;&amp;quot; &lt;br /&gt;
**(2) declaration initialization, &amp;quot;integer i=1;&amp;quot; &lt;br /&gt;
**(3) Brackets for list index access, &amp;quot;l[5]=5;&amp;quot; &lt;br /&gt;
**(4) a pragma which offers synonyms for functions without the &amp;quot;ll&amp;quot; and/or their C or Javascript short common names, if any; &lt;br /&gt;
**(5) double precision floating point; &lt;br /&gt;
**(6) long integers. &lt;br /&gt;
** Mephistopheles Thalheimer suggests also: &lt;br /&gt;
**(7) function overloads; and &lt;br /&gt;
**(8) classes.&lt;br /&gt;
&lt;br /&gt;
* [[Talk:Rotation#Useful snippets]] quaternion library improvements, e.g., SLERP, [http://www.isner.com/tutorials/quatSpells/quaternion_spells_12.htm], and [http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions]&lt;br /&gt;
&lt;br /&gt;
* Clarification of how scripting JIRA issues are resolved. Specifically minor or trivial, how/when do these get picked up to be worked on, could one or more Lindens dedicate some time each week to picking up a few smaller issues and working on them, using the JIRA list sorted by age (oldest first) to clear them by developing them, or trying to design a solution if required beforehand ([[User:Haravikk Mistral|Haravikk Mistral]]).&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;Discussed at [[User:Kelly_Linden/Office Hours/2010-10-25 | 2010-10-25 DISCUSSION / TRIAGE]]&#039;&#039;====&lt;br /&gt;
* LSL library calls for mesh&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_101/LSL_in_Focus:_Integers&amp;diff=1139537</id>
		<title>LSL 101/LSL in Focus: Integers</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_101/LSL_in_Focus:_Integers&amp;diff=1139537"/>
		<updated>2011-04-07T06:31:44Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Casting a float to an integer floors it.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavNextPrev|prefix=LSL in Focus:_|prev=Types|topic=Language Topics in Focus|next=Floats}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Integers in LSL roughly correspond to integers in mathematics.  They can be written in either the familiar decimal (e.g. 20, 0, -1) or [[#Hexadecimal Notation|hexadecimal]] (e.g. 0x14, 0x0, 0xFFFFFFFF).&lt;br /&gt;
&lt;br /&gt;
Integers in LSL are used in four distinct ways:&lt;br /&gt;
* Signed integers&lt;br /&gt;
* Truth values (Booleans)&lt;br /&gt;
* Enumerations&lt;br /&gt;
* Bit vectors&lt;br /&gt;
&lt;br /&gt;
There are a three operators, namely = (assignment), == (test for equality) and != (test for inequality) that are common to all uses of integers.  Other than those, the four different uses of integers generally involve separate sets of operators.&lt;br /&gt;
&lt;br /&gt;
== Signed Integers ==&lt;br /&gt;
This is the use of integers that corresponds to the normal use in mathematics.  The only substantive difference is that in mathematics, there are infinitely many integers, while in LSL integers are limited to the range −2,147,483,648 to 2,147,483,647.  Also, in LSL, no commas or other separators are allowed when writing integers, so these numbers would be written −2147483648 and 2147483647.&lt;br /&gt;
&lt;br /&gt;
=== Arithmetic Operators ===&lt;br /&gt;
LSL has the normal arithmetic operators +, -, * and / (for division).  The first three have the same meaning as what you used in grade school &#039;&#039;&#039;as long as the result is in the range −2147483648 to 2147483647&#039;&#039;&#039;.  If the result is outside that range, different rules apply. The typical scripter doesn&#039;t need to use numbers that are so big (or small), so there&#039;s nor reason to feel you need to learn the details of what happens when the limits are exceeded.  But there are instances where it is actually useful to allow numbers to exceed the limits. For the details of what happens in that case, see the Integer Overflow section, below.&lt;br /&gt;
&lt;br /&gt;
Division of integers in LSL is a variation on what you learned in elementary school. If the division results in a whole number, say 10/2, the answer is 5.  But 15/2 is neither 7.5 nor 7 with a remainder of 1.  Instead, it is exactly 7.  Any remainder is simply thrown away.  Alternatively, you can think of it as being rounded toward zero.  It&#039;s more accurate to say &amp;quot;rounded toward zero&amp;quot; than &amp;quot;rounded down&amp;quot;, because -15/2 is -7, not -8.  If you&#039;re scripting something where you really want 15 divided by 2 to be 7.5, don&#039;t despair.  You&#039;ll just need to use the &amp;quot;float&amp;quot; type instead of integers.&lt;br /&gt;
&lt;br /&gt;
Closely related to integer division is the remainder operator, written as %.  It gives you what would remain if you were to ask for integer division on the same numbers.  Here are some examples:&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i;&lt;br /&gt;
 i = 15 % 2;     // i is assigned the value 1&lt;br /&gt;
 i = 15 % 4;     // i is assigned the value 3&lt;br /&gt;
 i = -15 % 4;    // i is assigned the value -3&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If an attempt is made to divide by 0 (using either / or %), a run-time error occurs and script execution halts.&lt;br /&gt;
&lt;br /&gt;
Each of the arithmetic operators also has a corresponding assignment type operation.  For example&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer x;&lt;br /&gt;
 integer y;&lt;br /&gt;
 x += y;    // Synonymous with x = x + y;&lt;br /&gt;
 x -= y;    // Synonymous with x = x - y;&lt;br /&gt;
 x *= y;    // Synonymous with x = x * y;&lt;br /&gt;
 x /= y;    // Synonymous with x = x / y;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition, since incrementing or decrementing by 1 is quite common, is special unary operator for that. The operator is written ++ and is pronounced plus-plus. To increment the variable i by 1, we can write either ++i or i++.  So for example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i = 0;&lt;br /&gt;
 i++;     // i now has the value of 1&lt;br /&gt;
 ++i;     // i now has the value of 2&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the two operators are not identical, because i++ and ++i are expressions that can occur as part of a larger expression.  When used as part of a larger expression, i++ contributes its value to the expression &#039;&#039;before&#039;&#039; it is incremented.  For example, the fragment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i = 0;&lt;br /&gt;
 if (i++ == 0)&lt;br /&gt;
    llSay( 0, &amp;quot;The value of i was 0 when the comparison was done&amp;quot; )&lt;br /&gt;
 else&lt;br /&gt;
    llSay( 0, &amp;quot;The value of i was 1 when the comparison was done&amp;quot; )&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would chat &amp;quot;The value of i was 0 when the comparison was done&amp;quot; even though i ends up with the value of 1.  On the other hand, if we switch i++ to ++i, i.e.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i = 0;&lt;br /&gt;
 if (++i == 0)&lt;br /&gt;
    llSay( 0, &amp;quot;The value of i was 0 when the comparison was done&amp;quot; )&lt;br /&gt;
 else&lt;br /&gt;
    llSay( 0, &amp;quot;The value of i was 1 when the comparison was done&amp;quot; )&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the chat output would be &amp;quot;The value of i was 1 when the comparison was done&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The operator minus-minus (written --) works similarly.&lt;br /&gt;
&lt;br /&gt;
=== Comparison Operators ===&lt;br /&gt;
In addition to the arithmetic operators, there are also the normal integer comparison operators &amp;lt; (less than) and &amp;gt; (greater than).  For &amp;quot;less than or equal&amp;quot;, or &amp;quot;greater than or equal&amp;quot;, there are two-character operators &amp;lt;= and &amp;gt;=.  There can&#039;t be any space between the two characters of a two-character operator. &lt;br /&gt;
&lt;br /&gt;
The result of a comparison operator is either 0 (representing &#039;&#039;&#039;FALSE&#039;&#039;&#039;) or 1 (representing &#039;&#039;&#039;TRUE&#039;&#039;&#039;).  See [[#Truth Values (Booleans)|Truth Values (Booleans)]].&lt;br /&gt;
&lt;br /&gt;
=== Integer Overflow ===&lt;br /&gt;
* During script execution, integers wraps from 2147483647 to -2147483648 in the normal way&lt;br /&gt;
* The compiler treats integers outside the range -2147483648 to 2147483647 somewhat strangely.  No compile time warning or error is generated. (If the following explanation, doesn&#039;t make sense to you don&#039;t worry -- just know to avoid using numbers outside the valid range in your script.)  &lt;br /&gt;
** For an integer outside the range -2147483648 to 2147483647, the absolute value of the number is reduced to fall in the range 0 to 4294967295 (0xFFFFFFFF).  &lt;br /&gt;
** This number is then parsed as an unsigned 32 bit integer and cast to the corresponding signed integer.  &lt;br /&gt;
** If the value in the script had a negative sign, the sign of the internal representation is switched.&lt;br /&gt;
** The net effect is that very large positive numbers get mapped to -1 and very large negative numbers get mapped to 1.&lt;br /&gt;
&lt;br /&gt;
== Truth Values (Booleans) ==&lt;br /&gt;
There is not a special type for TRUE and FALSE in LSL.  Instead, TRUE is defined to be the integer 1 and FALSE is defined to be the integer 0.&lt;br /&gt;
&lt;br /&gt;
This has an interesting consequence in a conditional statement.  Consider the following example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i = 3;     // 3 is neither TRUE nor FALSE&lt;br /&gt;
 if (i)&lt;br /&gt;
    llSay( 0, &amp;quot;i is treated as being true.&amp;quot; );&lt;br /&gt;
 else&lt;br /&gt;
    llSay( 0, &amp;quot;i is treated as being false.&amp;quot; );&lt;br /&gt;
 if (i == TRUE)&lt;br /&gt;
    llSay( 0, &amp;quot;i is equal to TRUE.&amp;quot; );&lt;br /&gt;
 else&lt;br /&gt;
    llSay( 0, &amp;quot;i is not equal to TRUE.&amp;quot; );&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When run, the output will be&lt;br /&gt;
&lt;br /&gt;
 i is treated as being true.&lt;br /&gt;
 i is not equal to TRUE.&lt;br /&gt;
&lt;br /&gt;
This is because the condition in the &#039;&#039;&#039;if&#039;&#039;&#039; statement can be any integer.  Any non-zero value will cause the &#039;&#039;true&#039;&#039; block or statement to be executed, while a zero value will cause the &#039;&#039;false&#039;&#039; block or statement to be executed.&lt;br /&gt;
&lt;br /&gt;
The same zero/non-zero distinction is made wherever a truth value is expected.  In what follows, we&#039;ll use the word &#039;&#039;&#039;true&#039;&#039;&#039; and &#039;&#039;&#039;false&#039;&#039;&#039; to mean non-zero versus zero, while &#039;&#039;&#039;TRUE&#039;&#039;&#039; and &#039;&#039;&#039;FALSE&#039;&#039;&#039; will mean one and zero.&lt;br /&gt;
&lt;br /&gt;
=== Truth Value Operators ===&lt;br /&gt;
&lt;br /&gt;
There are three truth value operators in LSL:&lt;br /&gt;
* ! (representing &#039;&#039;&#039;not&#039;&#039;&#039;)&lt;br /&gt;
* &amp;amp;&amp;amp; (representing &#039;&#039;&#039;and&#039;&#039;&#039;)&lt;br /&gt;
* || (representing &#039;&#039;&#039;or&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
The ! operator takes a single operand and evaluates to &#039;&#039;&#039;TRUE&#039;&#039;&#039; if the operand is false, and &#039;&#039;&#039;FALSE&#039;&#039;&#039; otherwise.  For example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer i;&lt;br /&gt;
 i = !(3 == 7);     // 3 == 7 is FALSE, so i gets the value TRUE&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;amp;&amp;amp; operator takes two operands and evaluates to &#039;&#039;&#039;TRUE&#039;&#039;&#039; if both its operands are true, and &#039;&#039;&#039;FALSE&#039;&#039;&#039; otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; i = (3 &amp;lt; 7) &amp;amp;&amp;amp; (3 &amp;gt; 7);     // 3 &amp;lt; 7 is TRUE, but (3 &amp;gt; 7) is FALSE, so i gets the value FALSE&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The || operator takes two operands and evaluates to &#039;&#039;&#039;TRUE&#039;&#039;&#039; if either one of its operands are true, and &#039;&#039;&#039;FALSE&#039;&#039;&#039; otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; i = (3 &amp;lt; 7) || (3 &amp;gt; 7);     // one of the operands (3 &amp;lt; 7) is TRUE, so i gets the value TRUE&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Like the binary arithmetic operators, &amp;amp;&amp;amp; and || have a corresponding assignment type operator.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; integer x;&lt;br /&gt;
 integer y;&lt;br /&gt;
 x &amp;amp;&amp;amp;= y;    // Synonymous with x = x &amp;amp;&amp;amp; y;&lt;br /&gt;
 x ||= y;    // Synonymous with x = x || y;&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Statements Requiring Truth Values ===&lt;br /&gt;
There are four statement types that require a truth value condition:&lt;br /&gt;
* if&lt;br /&gt;
* for&lt;br /&gt;
* while&lt;br /&gt;
* do-while&lt;br /&gt;
&lt;br /&gt;
== Enumerations ==&lt;br /&gt;
Many built-in functions have a parameter or return value that takes one of a fixed number of alternatives.  For example, [[llAttachToAvatar]] has a single parameter which specifies the attachment point.  The attachment point is specified to be an integer, but the specific integer corresponding to each attachment point is arbitrary. Since the numbers themselves have no significance, LSL defines names such as [[ATTACH_HEAD]], [[ATTACH_LFOOT]] and [[ATTACH_BELLY]], which are simply meaningful names for the arbitrary integers.  Integers used in this way are called &#039;&#039;&#039;enumerations&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Generally, no operators besides the ubiquitous =, == and != are used with enumerations because there is no expected relationship between the arbitrarily selected integer values.&lt;br /&gt;
&lt;br /&gt;
== Bit Vectors ==&lt;br /&gt;
&lt;br /&gt;
=== Bit Vector Operators ===&lt;br /&gt;
Analogous to the truth value operators, LSL defines three operators specifically for bit vectors:&lt;br /&gt;
&lt;br /&gt;
* ~ (bitwise not)&lt;br /&gt;
* &amp;amp; (bitwise and)&lt;br /&gt;
* | (bitwise or)&lt;br /&gt;
&lt;br /&gt;
In contract to the truth value operators, these operate independently on each bit position.&lt;br /&gt;
&lt;br /&gt;
== Other Uses of Integers ==&lt;br /&gt;
&lt;br /&gt;
Although the four uses described above cover all the ways that integers are used with LSL built-in functions, they are not really exhaustive of the ways integers &#039;&#039;can&#039;&#039; be used.  There are algorithms in mathematics and computer science that mix arithmetic and bit vector operations, along with bit shift operators.  LSL supports this kind of computation with the bit shift operators inherited from C:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;&amp;lt; shift bits left&lt;br /&gt;
* &amp;gt;&amp;gt; shift bits right&lt;br /&gt;
&lt;br /&gt;
and their assignment analogs&lt;br /&gt;
&lt;br /&gt;
* &amp;gt;&amp;gt;=&lt;br /&gt;
* &amp;lt;&amp;lt;=&lt;br /&gt;
&lt;br /&gt;
Discussion of these algorithms is beyond the scope of this article, but see [http://graphics.stanford.edu/~seander/bithacks.html Bit Twiddling Hacks] for some examples.&lt;br /&gt;
&lt;br /&gt;
== Type conversions ==&lt;br /&gt;
=== Other types to integers ===&lt;br /&gt;
Casting a float to an integer has the same end effect as using the [[llFloor]] function.&lt;br /&gt;
=== Integers to other types ===&lt;br /&gt;
&lt;br /&gt;
== Differences between Integers in LSL and in C ==&lt;br /&gt;
Much of LSL is patterned after the C programming language, and integers are no exception.  Programmers who already know C can immediately apply most of their understanding of integers to LSL.&lt;br /&gt;
&lt;br /&gt;
Differences to note are&lt;br /&gt;
* The type must be spelled &#039;&#039;integer&#039;&#039; instead of &#039;&#039;int&#039;&#039;.&lt;br /&gt;
* There are no size modifiers (short, long, ...).  All integers are 32 bits.&lt;br /&gt;
* There is no unsigned modifier.  All integers are signed.&lt;br /&gt;
* Comparison operators evaluate to an integer (1 or 0), as they did in C prior to C99.&lt;br /&gt;
* The &amp;amp;&amp;amp; and || operators are strict, i.e. both operands are always evaluated, even if the result can be determined after evaluating the left operand.&lt;br /&gt;
&lt;br /&gt;
== Hexadecimal Notation ==&lt;br /&gt;
There&#039;s actually not much use for hexadecimal notation in LSL.  If you do feel a need to use it, you probably already know how it works.  If not, you can consult {{Wikipedia|Hexadecimal notation|Wikipedia}}.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1139187</id>
		<title>Content Creation, Mesh Import, Scripting User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation,_Mesh_Import,_Scripting_User_Group&amp;diff=1139187"/>
		<updated>2011-04-04T18:07:29Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Group Page&lt;br /&gt;
|purpose=&lt;br /&gt;
Topics are focused on anything related to the mesh import project. Feature requests, bug reports, design feedback, questions, comments, or example content are welcome.&lt;br /&gt;
&lt;br /&gt;
Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. &lt;br /&gt;
&lt;br /&gt;
|date-time= &lt;br /&gt;
Mondays at 11 AM in Pacific time (SL standard time)&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: &#039;&#039;&#039;April 4, 2011&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|location= &lt;br /&gt;
[secondlife://Aditi/secondlife/MeshHQ%201/251/250/24 Mesh HQ on Aditi]&lt;br /&gt;
|team=&lt;br /&gt;
Charlar Linden, Nyx Linden, and Runitai Linden. Please contact one of us if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
|agenda=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please add topics below &#039;&#039;&#039;prior to 10:50 AM&#039;&#039;&#039;. Also, please put your SL name down so we can follow up if we have questions. Thanks!&lt;br /&gt;
# Can you update us on recent progress and what your curent priorities are? Anything in particular we can test for you?&lt;br /&gt;
# Are we there yet?&lt;br /&gt;
# Seems like almost everything is broken. What&#039;s going on? [Drongle McMahon]&lt;br /&gt;
# Have you seen the error of your ways and decided to allow UUID swapping for meshes yet? -Stickman&lt;br /&gt;
|archive=&lt;br /&gt;
[https://wiki.secondlife.com/wiki/Mesh_User_Group/Archive Agenda and notes archive]. Older archives are [https://wiki.secondlife.com/wiki/User:Nyx_Linden/Mesh_Office_Hours_Agenda_Archive here].&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Mesh]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Mesh_Office_Hours_Agenda&amp;diff=1134282</id>
		<title>User:Nyx Linden/Mesh Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Mesh_Office_Hours_Agenda&amp;diff=1134282"/>
		<updated>2011-02-14T18:58:24Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* February 14, 2011 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mesh Team&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Mondays at 11 AM in Pacific time (SL standard time) located on the beta grid (Aditi) in Mesh HQ 1 at: [secondlife://Aditi/secondlife/MeshHQ%201/251/250/24  Mesh HQ on Aditi]&lt;br /&gt;
&lt;br /&gt;
Topics are focused on anything related to the mesh import project. Feature requests, bug reports, design feedback, questions, comments, or example content are welcome.&lt;br /&gt;
&lt;br /&gt;
Please add topics for discussion / agenda items to the end of the list below prior to 10:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden, Runitai Linden, or Charlar Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Archived agendas can be found at the [[User:Nyx_Linden/Mesh_Office_Hours_Agenda_Archive|agenda archive]].&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: February 14, 2011.&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
== February 14, 2011 ==&lt;br /&gt;
# Plan on moving to the current Mesh View build; Plans for older mesh content on Aditi in the coming month - charlar&lt;br /&gt;
# What is the license of the Collada file made from the avatar OBJ file?&lt;br /&gt;
# Any estimate when we will see API Documentation for uploading of content ? (Sculpties or meshes or even regular prims)&lt;br /&gt;
# Upload pricing finalized yet? Subscription based?&lt;br /&gt;
# Release date? Or at least an indication? Over a month? Over three months?&lt;br /&gt;
# Using a project timeline rather than a time-based timeline, where does the custom skeleton project sit? Immediately after meshes? With two or three other projects in front of it? Is it a high priority?&lt;br /&gt;
# Your item here&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Creating_Tattoos&amp;diff=1129320</id>
		<title>Talk:Creating Tattoos</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Creating_Tattoos&amp;diff=1129320"/>
		<updated>2010-12-24T01:53:21Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Does baking resize tattoos?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is there a maximum texture size for tattoos? They can be uploaded as any resolution, but are they resized to something else when they&#039;re baked into the avatar? --[[User:Stickman Ingmann|Stickman]] 01:53, 24 December 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=1088672</id>
		<title>User:Nyx Linden/Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=1088672"/>
		<updated>2010-11-03T16:47:28Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Clarified linking rules, neck attachment slot. UUID swap/bone mesh question /* November 3, 2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Nyx Linden&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Wednesdays at Noon in Pacific time (SL standard time) located in Borrowdale at: http://slurl.com/secondlife/Borrowdale/74/217/32&lt;br /&gt;
&lt;br /&gt;
Topics are focused on avatars, content creation efficiency, content creation tools and methods, rendering issues, and many related random topics.&lt;br /&gt;
&lt;br /&gt;
Please add topics for discussion / agenda items to the end of the list below prior to 11:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Archived agendas can be found at the [[User:Nyx_Linden/Office_Hours_Agenda_Archive|agenda archive]].&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: November 3, 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
== November 3, 2010 ==&lt;br /&gt;
# Will the new prim size also mean a new rule set for linking prims together, in other words, will the 30 meter limit change?&lt;br /&gt;
#* Andrew Linden is working on new linkability rules that simplify the equation to 54m from the center of objects being linked, regardless of scale. 54m is the current maximum linking distance. --[[User:Stickman Ingmann|Stickman]] 16:47, 3 November 2010 (UTC)&lt;br /&gt;
# Is this a bug or expected behavior? https://jira.secondlife.com/browse/CTS-309 Should mirroring be allowed for meshes?&lt;br /&gt;
# (General rendering, not Mesh) Shiny and especially pre-defined bumpmaps are broken (for me) with experimental &amp;quot;Lighting and Shadows&amp;quot; enabled (although &amp;quot;brightness&amp;quot; / &amp;quot;darkness&amp;quot; bitmaps still work).  Is this intended?  (Breaks some of my content, but if it&#039;s a necessary step for future Materials or something, I won&#039;t jira it.) [[User:Qie Niangao|Qie]] 13:27, 3 November 2010 (UTC)&lt;br /&gt;
# (Another general rendering) Experimental shadows from sun and projected lights passing through an 8-bit alpha-textured surface appear (to me) to be 1-bit alpha-masked, regardless of rendering settings.  Is that intentional (perhaps for computability)? [[User:Qie Niangao|Qie]] 13:37, 3 November 2010 (UTC)&lt;br /&gt;
# What happened to the neck attachment slot! :( --[[User:Stickman Ingmann|Stickman]] 16:47, 3 November 2010 (UTC)&lt;br /&gt;
# What&#039;s the current status on UUID swapping for meshes, and custom bones at release? --[[User:Stickman Ingmann|Stickman]] 16:47, 3 November 2010 (UTC)&lt;br /&gt;
# Your Question Here!&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetOwnerKey&amp;diff=1044912</id>
		<title>LlGetOwnerKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetOwnerKey&amp;diff=1044912"/>
		<updated>2010-09-29T04:05:38Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: Documented attach speak on detach, owner not found bug.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/uuid|id|sim=*}}{{LSL_Function&lt;br /&gt;
|func_id=182|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetOwnerKey|sort=GetOwnerKey&lt;br /&gt;
|return_type=key|p1_type=key|p1_name=id&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=that is the owner of object &#039;&#039;&#039;id&#039;&#039;&#039;&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
* Returns &#039;&#039;&#039;id&#039;&#039;&#039; if &#039;&#039;&#039;id&#039;&#039;&#039; is not found in the region or is not an object.&lt;br /&gt;
** If an attached object speaks on detach, the id of the object, not the owner, will be returned. [[https://jira.secondlife.com/browse/SVC-5095 SVC-5095]]&lt;br /&gt;
* &#039;&#039;&#039;id&#039;&#039;&#039; can be any prim in the object.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;key owner;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        owner = llGetOwner();&lt;br /&gt;
        llListen(1, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer a)&lt;br /&gt;
    {&lt;br /&gt;
        owner = llGetOwner();&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if(llGetOwnerKey(id) == owner)&lt;br /&gt;
        {//Only triggers if what spoke is the owner or if they share the same owner&lt;br /&gt;
            llOwnerSay(name + &amp;quot; has the same owner as me ^_^&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llKey2Name]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRequestAgentData]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetOwner]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=When used on an avatars key, the key of that avatar is returned again. So avatars are owned by themself.&lt;br /&gt;
|cat1=Owner&lt;br /&gt;
|cat2=Key&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official_talk:Private_Region_Transfer_FAQ&amp;diff=995353</id>
		<title>Linden Lab Official talk:Private Region Transfer FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official_talk:Private_Region_Transfer_FAQ&amp;diff=995353"/>
		<updated>2010-08-05T22:11:08Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: KB article needs an update. Here&amp;#039;s the info it needs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_____________________________&lt;br /&gt;
&lt;br /&gt;
This section doesn&#039;t appear to make sense:&lt;br /&gt;
&lt;br /&gt;
Is there a transfer fee?&lt;br /&gt;
&lt;br /&gt;
Yes. The USD$100 (or L$28,000 for L$ transfers) Region Transfer fee, which is always debited from the &#039;&#039;&#039;seller&#039;&#039;&#039;&#039;s account..... This means &#039;&#039;&#039;buyers&#039;&#039;&#039; need valid payment information on file with Linden Lab&lt;br /&gt;
&lt;br /&gt;
[[User:Chaz Longstaff|Chaz Longstaff]] 03:12, 30 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
_____________________________&lt;br /&gt;
&lt;br /&gt;
The initial instructions have different wording now.&lt;br /&gt;
&lt;br /&gt;
3. Select Ticket Type: &#039;&#039;&#039;Land &amp;amp; Region&#039;&#039;&#039; with these details:&lt;br /&gt;
* Land &amp;amp; Region: &#039;&#039;&#039;Initiate Region Sale&#039;&#039;&#039; or &#039;&#039;&#039;Initiate Region Purchase&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It should be mentioned that a value of &amp;quot;0&amp;quot; can be entered if the island is not being sold but transferred or traded, and that selecting USD or L$ will determine how the transfer fee is payed. Mentioning that selling it for USD$100 or L$28000 will make the seller &amp;quot;pay&amp;quot; the transfer fee would be useful -- some people don&#039;t notice these things.&lt;br /&gt;
&lt;br /&gt;
Also, I can&#039;t seem to edit the ticket after submission. Would be nice to know if support prefers the buyer or seller input the other&#039;s ticket number, as you can&#039;t have both.&lt;br /&gt;
&lt;br /&gt;
[[User:Stickman Ingmann|Stickman]] 22:11, 5 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Oz_Linden/Office_Hours_Topics&amp;diff=989432</id>
		<title>User:Oz Linden/Office Hours Topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Oz_Linden/Office_Hours_Topics&amp;diff=989432"/>
		<updated>2010-07-28T20:01:18Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am currently holding office hours twice a week - see [[User:Oz_Linden/Office_Hours]]&lt;br /&gt;
&lt;br /&gt;
If you have particular topics you would like to discuss, feel free to add them below.  If there is sufficient interest, we can also set up special sessions.&lt;br /&gt;
&lt;br /&gt;
=== Future Topics ===&lt;br /&gt;
# Publish statistics on user hardware: http://jira.secondlife.com/browse/MISC-4405 -[[User:Stickman Ingmann|Stickman]] 20:01, 28 July 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=989412</id>
		<title>User:Nyx Linden/Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=989412"/>
		<updated>2010-07-28T19:26:07Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Nyx Linden&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Wednesdays at Noon in Pacific time (SL standard time) located in Borrowdale at: http://slurl.com/secondlife/Borrowdale/74/217/32&lt;br /&gt;
&lt;br /&gt;
Topics are focused on avatars, content creation efficiency, content creation tools and methods, rendering issues, and many related random topics.&lt;br /&gt;
&lt;br /&gt;
Please add topics for discussion / agenda items to the end of the list below prior to 11:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Archived agendas can be found at the [[User:Nyx_Linden/Office_Hours_Agenda_Archive|agenda archive]].&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: July 28, 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
== July 28, 2010 ==&lt;br /&gt;
# Owner-After-Next Permissions for 1st Tier Content Creators - https://jira.secondlife.com/browse/SVC-2622&lt;br /&gt;
# Shared Media  does not allow for interaction or audio on HUDs in v2.1 (https://jira.secondlife.com/browse/VWR-20380).&lt;br /&gt;
# What happened to Samuel?&lt;br /&gt;
# Perhaps have a rendering Linden share this OH (and take BigPappy&#039;s place)?&lt;br /&gt;
# Mesh?&lt;br /&gt;
# UI! (had to be done)&lt;br /&gt;
# Custom skeletons -[[User:Stickman Ingmann|Stickman]] 19:06, 28 July 2010 (UTC)&lt;br /&gt;
# Any update on the incorrect height info in the appearance editor? (  https://jira.secondlife.com/browse/VWR-19767 )&lt;br /&gt;
# Scripted Controls of web Prims.&lt;br /&gt;
# specific timeframe for introduction of mesh imports, what restrictions will be imposed on them (vertex/poly wise) and what kind of rigging will be implimented.&lt;br /&gt;
# Windlight estate controls&lt;br /&gt;
# Your topic here.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=989352</id>
		<title>User:Nyx Linden/Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=989352"/>
		<updated>2010-07-28T19:06:43Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* July 28, 2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Nyx Linden&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Wednesdays at Noon in Pacific time (SL standard time) located in Borrowdale at: http://slurl.com/secondlife/Borrowdale/74/217/32&lt;br /&gt;
&lt;br /&gt;
Topics are focused on avatars, content creation efficiency, content creation tools and methods, rendering issues, and many related random topics.&lt;br /&gt;
&lt;br /&gt;
Please add topics for discussion / agenda items to the end of the list below prior to 11:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Archived agendas can be found at the [[User:Nyx_Linden/Office_Hours_Agenda_Archive|agenda archive]].&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: July 28, 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
== July 28, 2010 ==&lt;br /&gt;
# Owner-After-Next Permissions for 1st Tier Content Creators - https://jira.secondlife.com/browse/SVC-2622&lt;br /&gt;
# Shared Media  does not allow for interaction or audio on HUDs in v2.1 (https://jira.secondlife.com/browse/VWR-20380).&lt;br /&gt;
# What happened to Samuel?&lt;br /&gt;
# Perhaps have a rendering Linden share this OH (and take BigPappy&#039;s place)?&lt;br /&gt;
# Mesh?&lt;br /&gt;
# UI! (had to be done)&lt;br /&gt;
# Custom skeletons -[[User:Stickman Ingmann|Stickman]] 19:06, 28 July 2010 (UTC)&lt;br /&gt;
# Your topic here.&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=966612</id>
		<title>User:Nyx Linden/Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=966612"/>
		<updated>2010-07-14T18:41:45Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* July 14, 2010 */ multi-attachables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Nyx Linden&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Wednesdays at Noon in Pacific time (SL standard time) located in Borrowdale at: http://slurl.com/secondlife/Borrowdale/74/217/32&lt;br /&gt;
&lt;br /&gt;
Topics are focused on avatars, content creation efficiency, content creation tools and methods, rendering issues, and many related random topics.&lt;br /&gt;
&lt;br /&gt;
Please add topics for discussion / agenda items to the end of the list below prior to 11:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Archived agendas can be found at the [[User:Nyx_Linden/Office_Hours_Agenda_Archive|agenda archive]].&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: July 14, 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
== July 14, 2010 ==&lt;br /&gt;
# I do not wish to make problems but find ways to help build a new path of helping Users od Second Life learn new and better tools and shape Second Life to better fit in to the work place. - This is just the first step i hope this video i found help every one understands Metadata and why it will become inportent in years to come with in Second Life. http://www.youtube.com/watch?v=Udgxj77K3UU&amp;amp;   If you wish you can call me crazy. xstorm Radek&lt;br /&gt;
# As we see by this link work was started as small as it is. https://wiki.secondlife.com/wiki/Texture_meta-data&lt;br /&gt;
# Multi-Attachables: Limitations and release date. What changed on the server that makes it require 1.40? [[User:Stickman Ingmann|Stickman]] 18:41, 14 July 2010 (UTC)&lt;br /&gt;
# your topic here!&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=AW_Groupies&amp;diff=951472</id>
		<title>AW Groupies</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=AW_Groupies&amp;diff=951472"/>
		<updated>2010-06-29T05:49:35Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: fixed mailing list info -- IRC info is out of date?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Purpose=&lt;br /&gt;
Serious technical discussion about Linden Lab&#039;s [[Architecture Working Group|Architecture Working Group (AWG)]].  &amp;quot;AW Groupies&amp;quot; is an unofficial, Resident-operated group, though most (all?) members also participate in the AWG.&lt;br /&gt;
&lt;br /&gt;
Invite only (apply in-world to [[User:Zha Ewry|Zha Ewry]]), but the criterion is simple. Show up and contribute to the AWG, at [[User:Zero Linden|Zero Linden]]&#039;s office hours, or on the Wiki, or on SL-Dev or in the [irc://irc.freenode.net/#pyogp irc channel] for the [[Pyogp/Client_Lib|Python test client]].&lt;br /&gt;
&lt;br /&gt;
=Activities=&lt;br /&gt;
The [[AW_Groupies#Architecture_Working_Group_meetings|main AWG meeting]] is held annually or semi-annually.&lt;br /&gt;
We now [[AW_Groupies#In-World_Meetings|meet up to 8 times a week in-world]], counting AW Groupies meeting, Zero&#039;s office hours, Which&#039;s office hours, Enus&#039;s office hours, Whump&#039;s office hours and the [[Pyogp#In_World_Meetings|pygop daily meetings]].&lt;br /&gt;
&lt;br /&gt;
Our main focus these days is on the [[Open Grid Protocol]], the [[Open_Grid_Public_Beta]] and the [[Pyogp|pyogp Python test harness]] for protocol testing.&lt;br /&gt;
&lt;br /&gt;
Also members are quite active on the wiki and in the SLDEV mailing list.&lt;br /&gt;
&lt;br /&gt;
A public SVN repository is open to all AW Groupies members here: &lt;br /&gt;
* http://openmv.org/cgi-bin/viewvc.cgi/archwg/&lt;br /&gt;
&lt;br /&gt;
Contact anyone with root on openmv.org for an account if you are in the AW Groupies group in-world.&lt;br /&gt;
&lt;br /&gt;
==Architecture Working Group meetings==&lt;br /&gt;
* [[AWG_Meeting_1|AWG I annual meeting transcript, participants&#039; responses, etc]]&lt;br /&gt;
* [[AWG_Meeting_2|AWG II annual meeting transcript, video, participants&#039; responses, etc]]&lt;br /&gt;
&lt;br /&gt;
==In-World Meetings==&lt;br /&gt;
===AW Groupies meeting===&lt;br /&gt;
Weekly meeting times are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tuesdays&#039;&#039;&#039; ------   9:30 AM SLT (weekly AWG meeting)&lt;br /&gt;
&lt;br /&gt;
1st - 3rd Tuesdays of the month at [http://slurl.com/secondlife/ThorneBridgeTown/156/129/25 Zha&#039;s IBM Island at ThorneBridgeTown]  &lt;br /&gt;
&lt;br /&gt;
4th Tuesday of the month at [http://www.osgrid.org/elgg/index.php OSGrid] which you can access by using the login URI http://osgrid.org:8002.  See the [http://www.osgrid.org/elgg/index.php Main OSGrid page] for more info or read the [http://www.osgrid.org/docs/instructions.htm instructions to log in] for help.  Look for the region &amp;quot;Dahlia AWG&amp;quot; for the meeting!&lt;br /&gt;
&lt;br /&gt;
* ------------------ Noon SLT [https://wiki.secondlife.com/wiki/AW_Groupies#OpenSim__meeting| Open Sim Meeting]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Meetings are scheduled via the &amp;quot;[http://www.google.com/calendar/embed?src=pdd5mpktklo89bgmfgi076mcc4%40group.calendar.google.com SL AW Groupies&amp;quot; google calendar]&amp;quot; (though the above schedule is generally more accurate).&lt;br /&gt;
&lt;br /&gt;
* [http://www.google.com/calendar/feeds/pdd5mpktklo89bgmfgi076mcc4%40group.calendar.google.com/public/basic XML]&lt;br /&gt;
* [http://www.google.com/calendar/ical/pdd5mpktklo89bgmfgi076mcc4%40group.calendar.google.com/public/basic.ics ICal]&lt;br /&gt;
* Calendar ID: pdd5mpktklo89bgmfgi076mcc4@group.calendar.google.com&lt;br /&gt;
* [http://www.google.com/calendar/render?cid=pdd5mpktklo89bgmfgi076mcc4%40group.calendar.google.com Add to your Google Calendar]&lt;br /&gt;
&lt;br /&gt;
====Meeting Agendas====&lt;br /&gt;
&lt;br /&gt;
Each meeting should have an agenda --- which will be distributed via&lt;br /&gt;
* google calendar entry&lt;br /&gt;
* in-world notice to the SL &amp;quot;AW Groupies&amp;quot; group&lt;br /&gt;
* the [[AW Groupies In-World Meeting Agenda]] wiki page&lt;br /&gt;
&lt;br /&gt;
===OpenSim  meeting===&lt;br /&gt;
* Tuesdays/Saturdays noon SLT, at Wright Plaza sim in OSGrid. [http://osgrid.org/index.php?page=home&amp;amp;btn=1 Registration Page]&lt;br /&gt;
&lt;br /&gt;
Set [[Client_parameters|client command line options]] to: &lt;br /&gt;
:-loginuri http://osgrid.org:8002 &lt;br /&gt;
:-loginpage http://osgrid.org/loginscreen.php  &lt;br /&gt;
:-helperuri http://osgrid.org/&lt;br /&gt;
&lt;br /&gt;
===Chat Logs===&lt;br /&gt;
&lt;br /&gt;
Chat logs of the in-world meetings are published and accessible via the links below:&lt;br /&gt;
&lt;br /&gt;
====2007 meetings====&lt;br /&gt;
:* September: [[AW_Groupies/Chat_Logs/2007-09-28 | 28]]&lt;br /&gt;
:* October: [[AW Groupies/Chat Logs/2007-10-01 | 1]] [[AW Groupies/Chat Logs/2007-10-05 | 5]] [[User:Zero_Linden/Office_Hours/2007_Oct_09|9 --Zero&#039;s office]] [[AW Groupies/Chat Logs/2007-10-16| 16]]&lt;br /&gt;
:* November: [[AW Groupies/Chat Logs/2007-11-06 | 6]] [[AW Groupies/Chat Logs/2007-11-13 | 13]] [[AW Groupies/Chat Logs/2007-11-20| 20]]&lt;br /&gt;
====2008 meetings====&lt;br /&gt;
:* January: [[AW_Groupies/Chat_Logs/AWGroupies-2008-01-08|08]]&lt;br /&gt;
:*February: [[AW_Groupies/Chat_Logs/AWGroupies-2008-02-19|19]]&lt;br /&gt;
:*April: [[AW_Groupies/Chat_Logs/AWGroupies-2008-04-08|08]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-04-22|22]]  [[AW_Groupies/Chat_Logs/AWGroupies-2008-04-29|29]]&lt;br /&gt;
:*May: [[AW_Groupies/Chat_Logs/AWGroupies-2008-05-20|20]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-05-27|27]]&lt;br /&gt;
:*June: [[AW_Groupies/Chat_Logs/AWGroupies-2008-06-03|03]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-06-10|10]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-06-17|17]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-06-24|24]]&lt;br /&gt;
:*July: [[AW_Groupies/Chat_Logs/AWGroupies-2008-07-01|01]]  [[AW_Groupies/Chat_Logs/AWGroupies-2008-07-08| 08]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-07-15|15]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-07-22|22]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-07-29|29]]&lt;br /&gt;
:*August: [[AW_Groupies/Chat_Logs/AWGroupies-2008-08-05|05]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-08-12|12]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-08-19|19]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-08-26|26]]&lt;br /&gt;
:* September [[AW_Groupies/Chat_Logs/AWGroupies-2008-09-02|2]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-09-09|9]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-09-16|16]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-09-23|23]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-09-30|30]] &lt;br /&gt;
:* October [[AW_Groupies/Chat_Logs/AWGroupies-2008-10-07|7]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-10-14|14]] [[User:Zero_Linden/Office_Hours/2008_October_14|14 --Zero&#039;s O.H.]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-10-28|28]]&lt;br /&gt;
:* November [[AW_Groupies/Chat_Logs/AWGroupies-2008-11-11|11]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-11-18|18]]&lt;br /&gt;
:* December [[AW_Groupies/Chat_Logs/AWGroupies-2008-12-09|9]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-12-16|16]] [[AW_Groupies/Chat_Logs/AWGroupies-2008-12-23|23]]&lt;br /&gt;
====2009 meetings====&lt;br /&gt;
:*January [[AW_Groupies/Chat_Logs/AWGroupies-2009-01-06|6]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-01-13|13]]  [[AW_Groupies/Chat_Logs/AWGroupies-2009-01-20|20]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-01-27|27]]&lt;br /&gt;
:*February [[AW_Groupies/Chat_Logs/AWGroupies-2009-02-03|3]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-02-10|10]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-02-17|17]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-02-24|24]]&lt;br /&gt;
:*March [[AW_Groupies/Chat_Logs/AWGroupies-2009-03-03|3]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-03-10|10]]&lt;br /&gt;
:*April [[AW_Groupies/Chat_Logs/AWGroupies-2009-04-07|7]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-04-14|14]] [[AW_Groupies/Chat_Logs/AWGroupies-2009-04-28|28]]&lt;br /&gt;
:*June [[AW_Groupies/Chat_Logs/AWGroupies-2009-06-02|2]]  [[AW_Groupies/Chat_Logs/AWGroupies-2009-06-16|16]]&lt;br /&gt;
:*July [[AW_Groupies/Chat_Logs/AWGroupies-2009-07-21|21]]&lt;br /&gt;
:*September [[AW_Groupies/Chat_Logs/AWGroupies-2009-09-15|15]]&lt;br /&gt;
:*October [[AW_Groupies/Chat_Logs/AWGroupies-2009-10-20|20]]&lt;br /&gt;
====2010 meetings====&lt;br /&gt;
:*March [[AW_Groupies/Chat_Logs/AWGroupies-2010-03-02|2]]  [[AW_Groupies/Chat_Logs/AWGroupies-2010-03-09|9]]&lt;br /&gt;
:*April [[AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-13|13joe]]  [[AW_Groupies/Chat_Logs/AWGroupies-2010-04-20|20joshua]]  [[AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-20|20joe]]    &lt;br /&gt;
:*May [[AW_Groupies/Chat_Logs/AWGroupies-2010-05-04|04proxies]]   [[AW_Groupies/Chat_Logs/AWGroupies-2010-05-19|18meadhbh]]  [[AW_Groupies/Chat_Logs/AWGroupies-2010-05-25|25]]&lt;br /&gt;
:*June [[AW_Groupies/Chat_Logs/AWGroupies-2010-06-01|04mojito]]  &lt;br /&gt;
*&lt;br /&gt;
*  [[MMOX#Chat_logs|MMOX chat logs]] -- in-world transcripts with non-SL/Opensim participants&lt;br /&gt;
*  [https://wiki.secondlife.com/wiki/Category:Grid_Interoperability_Chat_Logs All Grid Interoperability chat logs]&lt;br /&gt;
*  [https://wiki.secondlife.com/wiki/Category:AW_Groupies_Transcripts All AW Groupies chat logs]&lt;br /&gt;
*  [https://wiki.secondlife.com/wiki/Category:Pyogp_Transcripts All Pyogp chat logs]&lt;br /&gt;
*  [https://wiki.secondlife.com/wiki/Category:Open_Grid_Public_Beta_Transcripts All Open Grid Public Beta Transcripts]&lt;br /&gt;
*&lt;br /&gt;
*  [[User:Zero_Linden#Transcripts_of_previous_office_hours|Zero Linden&#039;s Office Hour Transcripts]]&lt;br /&gt;
*  [[User:Which_Linden|Which Linden&#039;s Office Hour Transcripts]]&lt;br /&gt;
*  [[User:Enus_Linden| Enus Linden Office Hour Transcripts]]&lt;br /&gt;
*  [[User:Whump_Linden| Whump Linden Office Hour Transcripts]]&lt;br /&gt;
*&lt;br /&gt;
*  [http://opensimulator.org/wiki/Special:Search?search=chat+log OpenSim chat logs]&lt;br /&gt;
* [[Mono/2008-04-04 | mono beta meeting  discussion of het-grid]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
(if you post chat logs, you might want to use the [[User:Dr_Scofield/logtransform|sllog2wiki perl script]] to turn them into a more readable wiki table format ready to copy &amp;amp; paste into the chat log page)&lt;br /&gt;
&lt;br /&gt;
Chat logs of AWGroupies meetings should be summarized on the wiki.&lt;br /&gt;
&lt;br /&gt;
==Viewpoint Advocacy Groups==&lt;br /&gt;
&lt;br /&gt;
[[Viewpoint Advocacy Groups]]  - groups to focus on specific requirements.&lt;br /&gt;
=== AWG-specific VAGs===&lt;br /&gt;
&amp;lt;!-- Keep these in alphabetical order --&amp;gt;&lt;br /&gt;
* [[Core Grid Services, Protocols, and Structures VAG]]&lt;br /&gt;
* [[Event Scalability VAG]]&lt;br /&gt;
* [[Geometry and Physics VAG]]&lt;br /&gt;
* [[Live Performances VAG]]&lt;br /&gt;
* [[Quality Assurance VAG]]&lt;br /&gt;
* [[Scalability VAG]]&lt;br /&gt;
=== AWG-related VAGs===&lt;br /&gt;
* [[Map_API_VAG]]&lt;br /&gt;
* [[Multi-Process Client VAG -- draft]]&lt;br /&gt;
&lt;br /&gt;
=Work-In-Progress=&lt;br /&gt;
&lt;br /&gt;
Work-in-progress wiki pages are architecture pages that are (as the name implies ;-)) work in progress. Once the group has reached consensus that a particular topic is &amp;quot;good-to-go&amp;quot; we&#039;ll graduate that page to the [[Architecture Working Group|main AWG page]].&lt;br /&gt;
&lt;br /&gt;
==General Concerns==&lt;br /&gt;
* [[Scoping]]&lt;br /&gt;
* [[Architecture Working Group Glossary|Glossary]]&lt;br /&gt;
* [[Use Cases]]&lt;br /&gt;
===Open Grid Protocol (OGP)===&lt;br /&gt;
====Linden Pages====&lt;br /&gt;
&lt;br /&gt;
====User Pages====&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
* [[Initial CAPS seed]]&lt;br /&gt;
* [[AWG initial flows]]&lt;br /&gt;
* [[AWG flows login]]&lt;br /&gt;
&lt;br /&gt;
* [[Mudata]]&lt;br /&gt;
* [[Streamlet]]&lt;br /&gt;
===Documenting current protocols===&lt;br /&gt;
* [[Pyogp|Python test harness for OGP]]&lt;br /&gt;
** [[User:Which_Linden/Office_Hours/2008_May_22| Which Linden office hours 22 May 2008]]&lt;br /&gt;
====AWG and citizen pages====&lt;br /&gt;
* [[Current_login_protocols]]&lt;br /&gt;
* [[Current_Sim_Capabilities]]&lt;br /&gt;
* [[Example_protocol_code]]&lt;br /&gt;
* [[Hegemons_Login_Analysis#Very_simple_C.23__server]]&lt;br /&gt;
* [[User:Gareth_Ellison/Supergrid|Litesim grid interop]]&lt;br /&gt;
* [[EventQueueGet_CAP| Event Queue Get CAP]]&lt;br /&gt;
&lt;br /&gt;
====Linden Lab pages====&lt;br /&gt;
* [[Service_Disruptions|&amp;quot;Satellite&#039;s Eye&amp;quot; view of the Second Life architecture from a service disruption POV]]&lt;br /&gt;
* [[Message_System_and_Capabilities]]&lt;br /&gt;
* [[Viewer_Authentication]]&lt;br /&gt;
* [[Viewer_Architecture]]&lt;br /&gt;
* [[Protocol]]&lt;br /&gt;
* [[LLSD]]&lt;br /&gt;
* [[Certified_HTTP_Escrow]]&lt;br /&gt;
* [[ImprovedInstantMessage]]&lt;br /&gt;
* [[Client_parameters|client command line parameters and stuff]]&lt;br /&gt;
&lt;br /&gt;
====libsecondlife reference pages====&lt;br /&gt;
* [http://www.libsecondlife.org/wiki/Login Login page] &lt;br /&gt;
* [http://www.libsecondlife.org/wiki/Protocol_%28network%29 Protocol page] &lt;br /&gt;
* [http://www.libsecondlife.org/wiki/Category:Packets packets index]&lt;br /&gt;
* [http://www.libsecondlife.org/wiki/Movement Movement]&lt;br /&gt;
&lt;br /&gt;
====opensim reference pages====&lt;br /&gt;
* [http://opensimulator.org/wiki/Grid_Architecture_Diagram opensim grid architecture diagram]&lt;br /&gt;
* [http://opensimulator.org/images/3/3c/OGS1Login_Sequence.jpg login diagram (same general sequence as current LL login)]&lt;br /&gt;
&lt;br /&gt;
=== Future Protocols===&lt;br /&gt;
* [[Second_Life_Login_API_Strawman]]&lt;br /&gt;
:deprecated in favor of:&lt;br /&gt;
* [[Open Grid Protocol]]&lt;br /&gt;
** [[SLGOGP_Teleport_Strawman]]&lt;br /&gt;
*[[Architecture_Working_Group#Design_Documents | Ongoing next generation protocols documentation effort by Linden Lab]]&lt;br /&gt;
&lt;br /&gt;
=== Possible future directions ===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/OpenID| OpenID A decentralized single sign-on system]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Yadis| Yardis A digital identity protocol]&lt;br /&gt;
&lt;br /&gt;
==Asset Security and Trust==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/User:Dale_Innis/Asset_handling_in_OGP Asset Handling in OGP]&lt;br /&gt;
* [[Protecting content in an open grid]]&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/User:Infinity_Linden/OGP_Trust_Model OGP Trust Model]&lt;br /&gt;
&lt;br /&gt;
==Scaling Issues==&lt;br /&gt;
* [[Brainstorming#ANALYSIS:_Region_Subdivision_as_a_scaling_method| Region Subdivision]]&lt;br /&gt;
* [[Brainstorming#ANALYSIS:_Scalability_through_reverse_proxies:_the_paravirtual_grid| Reverse Proxies]]&lt;br /&gt;
* [[AWG Scalability through per-resident subdivision of the Grid| Resident Subdivision]]&lt;br /&gt;
===Group IM===&lt;br /&gt;
* [[Message_Queue_Evaluation_Notes| Which Linden&#039;s message queue evaluation notes]]&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
* [[Use_Cases#Extended_Capability_Clients|Extended Capability Clients]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Thinking-in-Progress=&lt;br /&gt;
&lt;br /&gt;
* Have a look and contribute to the [[Brainstorming|brainstorming]] page.&lt;br /&gt;
&lt;br /&gt;
* It&#039;s early days on the [[Multi-Process Client VAG -- draft]], but we would highly appreciate input to help with design choices and direction.&lt;br /&gt;
==Misc User Pages==&lt;br /&gt;
* Have an AWG idea? Don&#039;t know where in the wiki it should be indexed? Make sure that folks can find it by adding it to the [https://wiki.secondlife.com/wiki/Category:AW_Groupies_User_Pages AW_Groupies_User_Pages] Add: &amp;lt;nowiki&amp;gt;&#039;[[Category:AW Groupies User Pages]]&#039;&amp;lt;/nowiki&amp;gt; to the end of your user page.&lt;br /&gt;
&lt;br /&gt;
=External Resources=&lt;br /&gt;
&lt;br /&gt;
Stuff of interest to or in connection with the [[AW Groupies]] or the [[Architecture Working Group]]:&lt;br /&gt;
&lt;br /&gt;
* [[Developer_communication_tools|Developer Communication Tools (Linden Lab)]]&lt;br /&gt;
* [[SLDev|SLDev Main Page]]&lt;br /&gt;
* [[Open_Grid_Public_Beta]] &lt;br /&gt;
* [[Pyogp]] {Linden Labs/ AWG Python-based protocols testing library)&lt;br /&gt;
*&lt;br /&gt;
* [http://openmv.org/ OpenMetaverse Home] &lt;br /&gt;
**[http://www.libsecondlife.org/wiki/Main_Page libsecondlife (libsl) homepage]&lt;br /&gt;
**[http://opensimulator.org/wiki/Main_Page opensim homepage]&lt;br /&gt;
**[http://openviewer.org openviewer homepage]&lt;br /&gt;
**[http://code.google.com/p/openmetaverse/wiki/SimianGrid SimianGrid]&lt;br /&gt;
*[http://www.osgrid.org OSGrid: open/non-profit OpenSim based grid]&lt;br /&gt;
* [http://www.realxtend.org/ realxtend homepage]&lt;br /&gt;
*&lt;br /&gt;
* [http://www-03.ibm.com/press/us/en/pressrelease/22428.wss IBM PR re: AWG]&lt;br /&gt;
&lt;br /&gt;
Latha&#039;s quick list of interop relevant VW sites, 3/30/2010&lt;br /&gt;
* http://tools.ietf.org/wg/vwrap/ &lt;br /&gt;
* http://opensimulator.org/wiki/Main_Page &lt;br /&gt;
* http://openwonderland.org/ &lt;br /&gt;
* http://www.realxtend.org/ &lt;br /&gt;
* http://code.google.com/p/openmetaverse/wiki/SimianGrid&lt;br /&gt;
* http://www.opencobalt.org/ &lt;br /&gt;
* http://www.solipsis.org/ &lt;br /&gt;
* http://www.web3d.org/&lt;br /&gt;
&lt;br /&gt;
==Second Life Viewers==&lt;br /&gt;
Various viewers compatible with Second Life.&lt;br /&gt;
&lt;br /&gt;
::*Note: the &amp;quot;Derived 3rd-party clients&amp;quot; page includes a few non GPL viewers plus some hybrids. I&#039;ll try to come up with a better way to index this stuff. [[User:Saijanai Kuhn|Saijanai Kuhn]]&lt;br /&gt;
::*Yeah, that redirect of &amp;quot;Alternate_viewers&amp;quot; to &amp;quot;Downloads&amp;quot; is nuts, and the &amp;quot;Downloads&amp;quot; page itself seems to have to have a variety of things bundled together --- it needs splitting.  But don&#039;t split it by license, that&#039;s precisely what I sought to eliminate in this section&#039;s re-org.  It makes no sense to classify clients by license, since GPL&#039;d clients don&#039;t necessarily have anything to do with Linden&#039;s code, just like BSD clients don&#039;t necessarily have anything to do with libomv.  It does make sense to keep a list of Linden-derived clients though, since they&#039;re all more alike than not alike, and share both code and license encumbrance. [[User:Morgaine Dinova|Morgaine Dinova]] 01:28, 16 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Viewers based on the Linden Lab GPL code (C++)===&lt;br /&gt;
&lt;br /&gt;
*[http://secondlife.com/support/downloads.php Main Second Life viewer/client]&lt;br /&gt;
:The main (official) Second Life viewer, produced by Linden Lab with the help of patches submitted by the community, and available for Linux, Mac and Windows.&lt;br /&gt;
&lt;br /&gt;
*[[Snowglobe|Snowglobe]]&lt;br /&gt;
&lt;br /&gt;
:A new version of the Second Life client in a public repository where Linden Lab permits direct committing from select community members alongside daily Linden work.  There is also a new build system to keep this version continuously building when new submissions are received, with new builds available to everyone.  This version will become available as an alternative Linden download alongside the main SL client, once it is sufficiently stable.&lt;br /&gt;
&lt;br /&gt;
*[[Alternate_viewers|Derived 3rd-party clients]] (&#039;&#039;currently links to a mixed &amp;quot;Downloads&amp;quot; page, to be fixed&#039;&#039;)&lt;br /&gt;
:A large list of clients (not necessarily 3D) developed in the free and open-source community using GPL code from the above two official viewers.&lt;br /&gt;
&lt;br /&gt;
===Viewers based on the libomv/libsl code (C#)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/idealistviewer/ Idealist]&lt;br /&gt;
:IdealistViewer is a new cross-platform viewer based on the Irrlicht engine, PrimMesher, and LibOpenmetaverse. It can either use the Second Life protocols as provided by LibOpenmetaverse or the MXP protocol. Since it uses the Irrlicht engine it can simultaneously display prim/sculptie content and objects and animated meshes/avatars from a wide variety of sources such as Collada, .OBJ, DirectX, and Blitz3D files. It is not derived from the LL GPL viewer and is made available under BSD style licensing. It is designed to work with OpenSimulator but may also work with Second Life. It is written in the C# language.&lt;br /&gt;
&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/lookingglass/ LookingGlass]&lt;br /&gt;
:LookingGlass viewer is a modular viewer with pluggable communication and rendering engines. Initial communication plugin uses LibOpenMetaverse and the initial rendering plugin uses PrimMesher and Ogre. It is written in C# and BSD licensed. Home site at http://lookingglassviewer.org/ .&lt;br /&gt;
&lt;br /&gt;
===Viewers based on other libraries (python, C, etc)===&lt;br /&gt;
&lt;br /&gt;
* [[Pyogp]]&lt;br /&gt;
: Pyogp is an open source project between Linden Lab and the Architecture Working Group (AWG) to support testing the (Open Grid Protocol (OGP). Written in Python, Pyogp will consist initially of a client library and test functionality to enable testing OGP-enabled virtual worlds such as Second Life and compatible OpenSim implementations. These components will expand as the effort matures.  Pyogp is released under the Apache v2 license.&lt;br /&gt;
&lt;br /&gt;
==Mailing Lists==&lt;br /&gt;
* [https://lists.secondlife.com/cgi-bin/mailman/listinfo List of Linden Lab mailing lists]&lt;br /&gt;
** [https://lists.secondlife.com/cgi-bin/mailman/listinfo/opensource-dev Opensource-Dev]  Main mailing list for SL developers&lt;br /&gt;
** [https://lists.secondlife.com/cgi-bin/mailman/listinfo/sldev SLDEV]  Archived mailing list for SL developers&lt;br /&gt;
** [https://lists.secondlife.com/cgi-bin/mailman/listinfo/gridnauts gridnauts]  Mailing list for participants in Open Grid Public Beta&lt;br /&gt;
** [https://lists.secondlife.com/cgi-bin/mailman/listinfo/pyogp PyOGP] Mailing List for Python-based client library and test harness for the Open Grid Protocols&lt;br /&gt;
* [http://www.libsecondlife.org/wiki/Resources#Mailing_Lists  libsecondlife]&lt;br /&gt;
* [http://opensimulator.org/wiki/Main_Page opensim]&lt;br /&gt;
* [http://lists.berlios.de/mailman/listinfo/openviewer-dev openviewer]&lt;br /&gt;
* [http://www.ietf.org/mail-archive/web/vwrap/current/maillist.html VWRAP]&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
* irc://irc.freenode.net/#opensl&lt;br /&gt;
* irc://irc.freenode.net/#opensl-jira (real time updates of entries to jira.secondlife.com)&lt;br /&gt;
* irc://irc.freenode.net/#opensim&lt;br /&gt;
* irc://irc.freenode.net/#opensim-dev&lt;br /&gt;
* irc://irc.efnet.net/#libomv&lt;br /&gt;
* irc://irc.efnet.net/#libomv-dev&lt;br /&gt;
* irc://irc.freenode.net/#openviewer&lt;br /&gt;
* irc://irc.freenode.net/#openviewer-dev&lt;br /&gt;
* irc://irc.freenode.net/#realxtend  (Finnish language but can handle English if needed)&lt;br /&gt;
* irc://irc.freenode.net/#pyogp (Python test harness/pyogp Second LIfe library irc)&lt;br /&gt;
* irc://irc.freenode.net/#gridnauts (Open Grid Public Beta irc)&lt;br /&gt;
&lt;br /&gt;
==Forums==&lt;br /&gt;
* [http://groups.google.com/group/realxtend| realXtend google forum]&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cap-lore.com/CapTheory/index.html Capabilities theory and practice]&lt;br /&gt;
* [http://wiki.erights.org/wiki/Zooko%27s_triangle Zook&#039;s Triangle index] -- short list of interesting articles about naming and capabilties&lt;br /&gt;
* [http://www.cs.washington.edu/homes/levy/capabook/ Capability-based Systems by Henry Levy] --online copy of 1984 book on early implementations of capabilities systems&lt;br /&gt;
* [http://www.erights.org/ E language home] [https://www.cypherpunks.to/erights/ E language home mirror] [http://wiki.erights.org/ E wiki] --computer language dedicated to handling distributed trust issues&lt;br /&gt;
** [https://www.cypherpunks.to/erights/elib/capability/index.html Capability Computation]&lt;br /&gt;
** irc://irc.freenode.net/#erights &lt;br /&gt;
** [http://www.eros-os.org/mailman/listinfo/e-lang E language mailing list]&lt;br /&gt;
* [http://www.eros-os.org/mailman/listinfo/cap-talk mailing list for capability systems]&lt;br /&gt;
* [http://mscheffler.wordpress.com/2008/01/20/diploma/ blog and thesis on caps in virtual worlds Martin Scheffler]&lt;br /&gt;
* [http://homepage.mac.com/kpreid/elang/den.html  Cap-based MUD by Kevin Reid] --written in E&lt;br /&gt;
* [http://www.fudco.com/chip/lessons.html discussion of ancient (Commodore 64!) video game that used capabilities]&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
&lt;br /&gt;
* [http://blog.signpostmarv.name/2008/07/29/non-unique-region-names-within-the-confines-of-a-single-grid-yay-or-nay/ non-unique region names within the confines of a single grid, yay or nay ?]&lt;br /&gt;
* [http://blog.signpostmarv.name/2008/01/04/map-api-in-new-location/ discussion of new Map API and related issues]&lt;br /&gt;
* [http://wiki.secondlife.com/wiki/Open_Source  Open Source Portal] --index to all things Open Source for Linden Lab&lt;br /&gt;
&lt;br /&gt;
=Members=&lt;br /&gt;
&lt;br /&gt;
Founder [[User: Zha Ewry|Zha Ewry]]&lt;br /&gt;
&lt;br /&gt;
[[User:Saijanai Kuhn|Saijanai Kuhn]]&lt;br /&gt;
&lt;br /&gt;
[[User:Tao Takashi|Tao Takashi]]&lt;br /&gt;
&lt;br /&gt;
[[User:Tillie Ariantho|Tillie Ariantho]]&lt;br /&gt;
&lt;br /&gt;
[[User:Dr Scofield|Dr Scofield]]&lt;br /&gt;
&lt;br /&gt;
[[User:Burhop Piccard|Burhop Piccard]]&lt;br /&gt;
&lt;br /&gt;
[[User:Vicero Lambert|Vicero Lambert]]&lt;br /&gt;
&lt;br /&gt;
[[User:Morgaine Dinova|Morgaine Dinova]]&lt;br /&gt;
&lt;br /&gt;
[[User:Silicon Plunkett|Silicon Plunkett]]&lt;br /&gt;
&lt;br /&gt;
[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Architecture Working Group]]&lt;br /&gt;
[[Category:Grid_Interoperability]]&lt;br /&gt;
[[Category:AW Groupies]]&lt;br /&gt;
[[Category:MMOX]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Microsoft_Windows_Builds&amp;diff=942932</id>
		<title>Microsoft Windows Builds</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Microsoft_Windows_Builds&amp;diff=942932"/>
		<updated>2010-06-16T14:12:11Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* Getting other development tools */ Compile required zlib-devel (mentioned in the troubleshooting section) from cygwin to work for me, adding as requirement.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{multi-lang}}&lt;br /&gt;
{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Windows, there are several options on build (compile) environment of the Second Life.&lt;br /&gt;
&lt;br /&gt;
This page explains how you can compile the Viewer on Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
Currently, only 32 bit binary is tested.  There seems to be several trials to produce 64 bit Windows .EXE of the Viewer.  If you did, please write your experience on [[Talk:Microsoft Windows Builds|the discussion page]] (regardless it was successful or not!)&lt;br /&gt;
&lt;br /&gt;
== Choosing and preparing a compiler ==&lt;br /&gt;
&lt;br /&gt;
=== Linden-supported compilers ===&lt;br /&gt;
&lt;br /&gt;
Supported compiler: &#039;&#039;&#039;Visual Studio .NET 2005 Professional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to setup the compiler and Microsoft Development tools as follows:&lt;br /&gt;
* Setup [[Microsoft Visual Studio]]&lt;br /&gt;
&lt;br /&gt;
=== Community experimental compilers ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t have Visual Studio .NET 2005 Professional, you may wish to try one of the following alternatives.&lt;br /&gt;
&lt;br /&gt;
* Visual C++ 2005 Express ([[Microsoft Visual Studio|instructions]], but the screenshots for [[Compiling the Viewer (MSVS2008)|VS2008]] are worth a glance too)&lt;br /&gt;
* Visual Studio 2008 ([[Compiling the Viewer (MSVS2008)|instructions]])&lt;br /&gt;
* Visual C++ 2008 Express ([[Compiling the Viewer (MSVS2008)|instructions]])&lt;br /&gt;
&lt;br /&gt;
{{Warning|Boost support with Visual Studio 2008 is problematic as of this writing.  Check {{jira|VWR-9541}} before continuing on this path.}}&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure you install to paths without spaces in it.&lt;br /&gt;
&lt;br /&gt;
== Getting other development tools ==&lt;br /&gt;
&lt;br /&gt;
You will need to install the following tools to compile the Viewer:&lt;br /&gt;
* &#039;&#039;&#039;UniCode NSIS&#039;&#039;&#039;([http://www.scratchpaper.com/home/downloads download Unicode NSIS])&lt;br /&gt;
**  This is the package installer used to build Setup.exe. &amp;lt;b&amp;gt;Note&amp;lt;/b&amp;gt;: As of this writing the file is downloaded with an *.exec extension that needs renamed *.exe.--[[User:Nicky Perian|Nicky Perian]] 16:22, 30 March 2010 (UTC)&lt;br /&gt;
* &#039;&#039;&#039;CMake&#039;&#039;&#039; ([http://www.cmake.org/HTML/Download.html download CMake])&lt;br /&gt;
**  As of this writing, the latest version is 2.6.2.  &amp;lt;b&amp;gt;Note&amp;lt;/b&amp;gt;: There are many known issues with CMake 2.6.0 and 2.6.1 in conjunction with building the Second Life Viewer.  CMake 2.4.8 is supported for compiling the 1.21 version of the Second Life Viewer, but 2.6.2 is likely to become the new minimum requirement in the near future.&lt;br /&gt;
* &#039;&#039;&#039;Cygwin&#039;&#039;&#039; ([http://www.cygwin.com/ download Cygwin])&lt;br /&gt;
** When you run the cygwin setup utility make sure you have selected to install &#039;&#039;&#039;patchutils&#039;&#039;&#039;, &#039;&#039;&#039;flex&#039;&#039;&#039;, &#039;&#039;&#039;bison&#039;&#039;&#039;, and &#039;&#039;&#039;zlib-devel&#039;&#039;&#039;(all located under &amp;quot;devel&amp;quot;) which are not part of the default install. (If you missed one of these, the easiest thing to do is to re-run the entire installation.)&lt;br /&gt;
* &#039;&#039;&#039;Python&#039;&#039;&#039; (download either [http://www.python.org/download/ Python.org Standard Python] or  [http://www.activestate.com/Products/ActivePython/?mp=1 ActivePython]&lt;br /&gt;
**  If you are using a version of Python newer than v2.5, you may need to change the Python.cmake file. See the [[Talk:CMake#CMake_and_Python_2.6|CMake discussion]] for details (this change was necessary as of 1.21-r99587 source branch). )  &lt;br /&gt;
* &#039;&#039;&#039;The Windows Platform SDK&#039;&#039;&#039;&lt;br /&gt;
** Get the latest version (as of 23 March 2010) here: [http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displayLang=en Windows SDK for Windows Server 2008 and .NET Framework 3.5 SP1]&lt;br /&gt;
* &#039;&#039;&#039;DirectX 9.0 SDK&#039;&#039;&#039;&lt;br /&gt;
** Get the latest version (as of 29 Oct 2008) here: [http://www.microsoft.com/downloads/details.aspx?FamilyID=ea4894b5-e98d-44f6-842d-e32147237638&amp;amp;DisplayLang=en DirectX 9.0 SDK (August 2008)]&lt;br /&gt;
&lt;br /&gt;
Verify that Cygwin, CMake, and Python are in the windows &amp;quot;PATH&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use the Cygwin version of CMake or Python. The Build will fail. (CMake specifically excludes the Cygwin version of Python, in the &amp;lt;code&amp;gt;&#039;Python.cmake&#039;&amp;lt;/code&amp;gt; file)&lt;br /&gt;
&lt;br /&gt;
== Downloading source code ==&lt;br /&gt;
&lt;br /&gt;
You can download the Viewer source code on the [[source downloads]] page.  You can also use a [[version control repository]].  If you&#039;re just starting out, it&#039;s probably best to get the latest Release version, rather than a Release Candidate, because the Release Candidates get updated quite often.  But if you would rather work with the latest code, go for the [[version control repository]] &amp;quot;trunk&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re downloading from the [[source downloads]] page, there are three packages to get: the source package, the artwork package, and the library package.   In versions 1.20 and earlier, Linden packaged the library binaries in the Libs package. For 1.21 and beyond, the CMake develop.py script now downloads &#039;&#039;&#039;most&#039;&#039;&#039; of the libraries that were previously in the libs zip file.  This saves developers who are tracking trunk from constantly downloading them every update and only downloads updated libraries.   As of this writing, there are some pieces packages that still require downloading, so be sure to grab the library and artwork bundles from the [[source downloads]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING:&#039;&#039;&#039;&lt;br /&gt;
* If the directory path you keep the SL source in has a space in it, the batch file that copies message_template.msg will fail. So, if you unzip or checkout the source tree into, e.g., &amp;quot;C:\Projects\Dir with space in name\Etc\linden&amp;quot;, it won&#039;t work!&lt;br /&gt;
* You should also avoid using non-ASCII (national) characters in the paths, although some localized versions of the tool puts some as a default...&lt;br /&gt;
* Unzip or checkout your source tree into a directory that has as short full pathname as possible, since long paths cause some unexpected trouble during the build.&lt;br /&gt;
&lt;br /&gt;
In other words, the easiest way to get this working is to get &#039;&#039;&#039;source&#039;&#039;&#039;, &#039;&#039;&#039;artwork&#039;&#039;&#039;, and &#039;&#039;&#039;libs&#039;&#039;&#039; from the [[source downloads]] page and unpack them all into the same directory/folder, which ideally would be a folder in (or near) the root directory with a short name like &#039;&#039;&#039;sl_1_21_6&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Installing libraries ==&lt;br /&gt;
&lt;br /&gt;
SL Viewer depends on some third party libraries.  Some of them are open source, some others are not.&lt;br /&gt;
&lt;br /&gt;
=== Open source libraries ===&lt;br /&gt;
&lt;br /&gt;
As of Viewer version 1.21, all open source libraries are automatically downloaded as part of the build process, unless you choose to configure a standalone build.&lt;br /&gt;
&lt;br /&gt;
=== Proprietary libraries ===&lt;br /&gt;
&lt;br /&gt;
Linden does not include the following proprietary libraries.  You will need to follow the instructions to acquire below and copy them to the source path.&lt;br /&gt;
&lt;br /&gt;
However, it probably is a good idea to build an empty directory tree for the files below and first copy the files there and once completed, copy the whole tree to the actual source folder (like &#039;&#039;XCOPY OLIB SL_1_16_0_5 /S&#039;&#039;).  The reason is, that these steps are cumbersome and will have to be repeated for each new release (at least if you keep the source for each release in it&#039;s own folder).  If you do not want to do this, of course you can just copy the files directly into the linden source paths.&lt;br /&gt;
&lt;br /&gt;
 rem OLIBS.CMD to build a folder tree for 3rd party libraries and includes&lt;br /&gt;
 md olibs&lt;br /&gt;
 md olibs\linden\&lt;br /&gt;
 md olibs\linden\libraries&lt;br /&gt;
 md olibs\linden\libraries\include&lt;br /&gt;
 md olibs\linden\libraries\i686-win32&lt;br /&gt;
 md olibs\linden\libraries\i686-win32\lib_release&lt;br /&gt;
 md olibs\linden\libraries\i686-win32\lib_debug&lt;br /&gt;
 md olibs\linden\libraries\i686-win32\include&lt;br /&gt;
 md olibs\linden\libraries\i686-win32\include\GL&lt;br /&gt;
 md olibs\linden\libraries\i686-win32\include\quicktime&lt;br /&gt;
 md olibs\linden\indra&lt;br /&gt;
 md olibs\linden\indra\newview&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fmod ====&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/files/fmod3/fmodapi375win.zip FMOD3.75 API for Windows]. (later versions, like FMOD Ex, are incompatible).&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmod_errors.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\inc\fmoddyn.h&amp;quot; to &amp;quot;linden\libraries\include&amp;quot;&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_release&amp;quot; and to &amp;quot;linden\libraries\i686-win32\lib_debug&amp;quot;&lt;br /&gt;
(If using cmake, copy &amp;quot;fmodapi375win\api\lib\fmodvc.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib\release&amp;quot; and to &amp;quot;linden\libraries\i686-win32\lib\debug&amp;quot;)&lt;br /&gt;
* Copy &amp;quot;fmodapi375win\api\fmod.dll&amp;quot; to &amp;quot;linden\indra\newview&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Quicktime ====&lt;br /&gt;
&lt;br /&gt;
Currently - as of version 1.21 - CMake requires Quicktime to be installed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This download requires a registration at the Apple Quicktime website and take a bit of time.  You can avoid using QuickTime if you want, see [[Compiling_older_Viewers_(1.20_and_earlier_with_MSVS)#QuickTime_removal|this]] for details.  Remember that your Viewer &#039;&#039;&#039;can&#039;t play in-world movies&#039;&#039;&#039; if you do so.&lt;br /&gt;
* Download &amp;amp; install the [http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/203/wa/getSoftware?fileID=20525&amp;amp;code=y&amp;amp;source=x&amp;amp;wosid=4h16WcyMtVfd2P1EffGafkoxFcr Quicktime SDK for Windows]&lt;br /&gt;
* Copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib_release&amp;quot; and to  &amp;quot;linden\libraries\i686-win32\lib_debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
(If using CMake, copy &amp;quot;QuicktimeSDK\Libraries\QTMLClient.lib&amp;quot; to &amp;quot;linden\libraries\i686-win32\lib\release&amp;quot; and to &amp;quot;linden\libraries\i686-win32\lib\debug&amp;quot; instead)&lt;br /&gt;
&lt;br /&gt;
* Copy the contents of &amp;quot;QuicktimeSDK\CIncludes&amp;quot; into &amp;quot;linden\libraries\i686-win32\include\quicktime&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Building with CMake ==&lt;br /&gt;
&lt;br /&gt;
At this point, you should be ready to use [[CMake]]. &#039;&#039;&#039;NOTE&#039;&#039;&#039;: CMake is only supported for Viewer versions 1.21 and beyond. Before you first run a build, you&#039;ll need to configure things.  There&#039;s a &amp;lt;code&amp;gt;develop.py&amp;lt;/code&amp;gt; script that will create a reasonably sane default configuration for you.&lt;br /&gt;
&lt;br /&gt;
You must make sure that cmake is registered in the Windows environment, or you will get strange errors from develop.py. Right click My Computer -&amp;gt; Properties -&amp;gt; Advanced -&amp;gt; Environment Variables -&amp;gt; Inside System Variables choose PATH (case insensitive) and click Edit. Now in the value field, go to the end of the value and add a semicolon (;), and then the folder containing necessary binaries (example: C:\Program Files\CMake 2.8\bin). This might already have been set by the cmake installer.&lt;br /&gt;
&lt;br /&gt;
From the command line, &#039;&#039;&#039;cd into the indra subdirectory&#039;&#039;&#039; and run one of the following commands (depending on your choice of platform and build environment):&lt;br /&gt;
** VisualStudio 2005: &amp;lt;code&amp;gt;&amp;quot;python develop.py -G VC80&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** VisualStudio 2008: &amp;lt;code&amp;gt;&amp;quot;python develop.py -G VC90&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The above commands will configure a &amp;quot;non-standalone&amp;quot; version of the source code tree. This means that the required third party library packages (as built by Linden Lab) will be downloaded during the CMake process.&lt;br /&gt;
&lt;br /&gt;
=== Finding your build directory ===&lt;br /&gt;
&lt;br /&gt;
In the CMake world, we keep source and object files separate.  The &amp;lt;code&amp;gt;develop.py&amp;lt;/code&amp;gt; script will create and populate a build directory for you.  It should be in one of the following locations:&lt;br /&gt;
* VS 2005: &amp;lt;code&amp;gt;&#039;build-vc80&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* VS 2008: &amp;lt;code&amp;gt;&#039;build-vc90&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
To start a build, do one of the following:&lt;br /&gt;
*  Run &amp;lt;code&amp;gt;python develop.py build&amp;lt;/code&amp;gt; in the indra directory.&lt;br /&gt;
*  Load it into your IDE.  For MSVS VC++:&lt;br /&gt;
** Use &amp;quot;File -&amp;gt; Open -&amp;gt; Project/Solution&amp;quot;, and navigate to linden/indra/build-VC80/Viewer.vcproj (or build-VC90, as appropriate).&lt;br /&gt;
** In the MSVS toolbar, just to the right of the triangular &amp;quot;Start Debugging&amp;quot; arrow, is a text box whose tooltip is &amp;quot;Solution Configurations&amp;quot;.  Select RelWithDebugInfo.&lt;br /&gt;
** If ALL_BUILD is not set as your StartUp Project (the StartUp Project is displayed in bold font), right-click on ALL_BUILD and choose &amp;quot;Set as StartUp Project&amp;quot;.&lt;br /&gt;
** Right-click on ALL_BUILD and choose &amp;quot;Properties&amp;quot;.  In &amp;quot;Configuration Properties -&amp;gt; Debugging&amp;quot;, find &amp;quot;Working Directory&amp;quot; and navigate to &amp;quot;linden\indra\newview&amp;quot;.&lt;br /&gt;
** (For Snowglobe 1.x) In the Solution Explorer pane, right-click on the project named &amp;quot;prepare&amp;quot; and select Project Only -&amp;gt; Build Only prepare.  This downloads and installs precompiled libraries and only needs to be done when the source tree is clean or if libraries in the list included in the source tree get updated.  Running this when not required is brief and causes no harm.&lt;br /&gt;
** Build -&amp;gt; Build Solution (F7)&lt;br /&gt;
** Debug -&amp;gt; &amp;quot;Start Debugging&amp;quot; or &amp;quot;Start without debugging&amp;quot;.&lt;br /&gt;
** MSVC might not be able to find the executable.  If not, point it to &amp;quot;linden\indra\build-VC80\newview\relwithdebinfo\secondlife-bin.exe&amp;quot;, and try again.&lt;br /&gt;
** You may see an error due to not being able to find fmod.dll.  If so, find a copy (remember, you copied this in a step above) and copy it into &amp;quot;indra\build-VC80\newview\relwithdebinfo&amp;quot;.  Try again.&lt;br /&gt;
** You may see an error due to not finding llkdu.dll.  If so, find it in the normal installed version (make sure it&#039;s the same version as your source) and copy it into &amp;quot;indra\build-VC80\newview\relwithdebinfo&amp;quot;.  Try again.&lt;br /&gt;
** Good luck!&lt;br /&gt;
&lt;br /&gt;
=== Where&#039;s the built Viewer? ===&lt;br /&gt;
&lt;br /&gt;
On Windows, the built Viewer ought to run from VS2005.&lt;br /&gt;
&lt;br /&gt;
To run outside MS VS, see Discussion tab:&lt;br /&gt;
[[Talk:Microsoft_Windows_Builds#Running_Viewer_outside_of_MS_VC]]&lt;br /&gt;
&lt;br /&gt;
=== Build instructions for 1.20 and earlier ===&lt;br /&gt;
&lt;br /&gt;
See [[Compiling older Viewers (1.20 and earlier with MSVS)]] if you&#039;d like to compile a version of the Viewer older than 1.20.&lt;br /&gt;
&lt;br /&gt;
== What to do if it doesn&#039;t work for you ==&lt;br /&gt;
&lt;br /&gt;
* Ask for help on [[IRC]] (irc.freenode.net #opensl)&lt;br /&gt;
* Find someone on the [[SLDev|SLDev mailing list]]&lt;br /&gt;
* Fix it: [[Modifying CMake Files‎]] (and please, submit a patch!)&lt;br /&gt;
&lt;br /&gt;
Please also see the (user contributed) instructions at [[User:Michelle2_Zenovka/cmake]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Compiling viewer]]&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_HTTP_server&amp;diff=934392</id>
		<title>LSL HTTP server</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_HTTP_server&amp;diff=934392"/>
		<updated>2010-06-02T06:47:16Z</updated>

		<summary type="html">&lt;p&gt;Stickman Ingmann: /* Script API */ Added ports used by the HTTP server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is the counterpart to [[llHTTPRequest]].  While llHTTPRequest enables LSL scripts request data from HTTP-accessible sources, HTTP-in enables outside sources to request data from scripts in Second Life.  The key difference is that llHTTPRequest exchanges data when the script in SL wants; HTTP-in allows outside sources to determine when they need to communicate with scripts in SL.&lt;br /&gt;
&lt;br /&gt;
Prior to HTTP-in, similar functionality could be achieved by [[HTTP Polling|polling]] with [[llHTTPRequest]], [[llEmail]] and [[:Category:LSL_XML-RPC|XML-RPC]].  All three are cumbersome and the latter two have serious scalability bottlenecks.&lt;br /&gt;
&lt;br /&gt;
It is important to note that LSL HTTP servers cannot use HTML. See [[#Other_Limitations|Other Limitations]] for details.&lt;br /&gt;
&lt;br /&gt;
== Uses ==&lt;br /&gt;
* Easily get data from LSL scripts to outside viewers, scripts or servers.&lt;br /&gt;
** Web front end for a visitor counter or other statistics accumulator.&lt;br /&gt;
* Easily get data into LSL scripts from outside viewers, scripts or servers.&lt;br /&gt;
** A store with a web front end that communicates to an in-world object to exchange L$ and inventory items.&lt;br /&gt;
** Inworld game for which an external program handles the primary game logic that needs to manipulate inworld items.&lt;br /&gt;
&lt;br /&gt;
Gory Technical Details follow.  Or jump straight to the [[LSL_http_server/examples | Script Examples]].&lt;br /&gt;
&lt;br /&gt;
== Script API ==&lt;br /&gt;
* &#039;&#039;&#039;[[LlRequestURL|key llRequestURL()]]&#039;&#039;&#039;&lt;br /&gt;
: Request a new LSL Server public URL. &lt;br /&gt;
: An http_request event will be triggered with success or failure and include the returned key&lt;br /&gt;
: HTTP-in uses port 12046, and HTTPS-in uses port 12043.&lt;br /&gt;
: NOTE: URL&#039;s are assigned to the script that called them, an http_request event will not be triggered in a script separate from the one that requested the URL.&lt;br /&gt;
&amp;lt;lsl&amp;gt;request_id = llRequestURL();&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[LlRequestSecureURL|key llRequestSecureURL()]]&#039;&#039;&#039;&lt;br /&gt;
: Similar to &#039;&#039;llRequestURL&#039;&#039; except requests an HTTPS / SSL URL.&lt;br /&gt;
: An http_request event will be triggered with success or failure and include the returned key&lt;br /&gt;
&amp;lt;lsl&amp;gt;request_id = llRequestSecureURL();&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[LlReleaseURL|llReleaseURL(string url)]]&#039;&#039;&#039;&lt;br /&gt;
: Clear the specific URL, used for both secure and non-secure URLs.&lt;br /&gt;
&amp;lt;lsl&amp;gt;llReleaseURL(&amp;quot;http://sim3015.aditi.lindenlab.com:12046/cap/3ff4f3f2-ea08-76c1-cef6-a22b4a573a7c&amp;quot;);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[Http_request|http_request(key id, string method, string body)]]&#039;&#039;&#039;&lt;br /&gt;
: Event triggered when an URL is hit:&lt;br /&gt;
:* id is unique to this request&lt;br /&gt;
:* Supported methods are GET/POST/PUT/DELETE&lt;br /&gt;
:* body: The body of the request.&lt;br /&gt;
: Event also triggered with response to &#039;&#039;llRequestURL&#039;&#039; and &#039;&#039;llRequestSecureURL&#039;&#039;&lt;br /&gt;
:* id matches the key returned by &#039;&#039;llRequestURL&#039;&#039; or &#039;&#039;llRequestSecureURL&#039;&#039;&lt;br /&gt;
:* method == [[URL_REQUEST_GRANTED]] for success, [[URL_REQUEST_DENIED]] for failure to get an URL&lt;br /&gt;
:* body is the public URL.  If unable to get a public URL body will be empty.&lt;br /&gt;
* &#039;&#039;&#039;[[LlHTTPResponse|llHTTPResponse(key id, integer status, string body)]]&#039;&#039;&#039;&lt;br /&gt;
: Send &#039;&#039;body&#039;&#039; to the requester with status code &#039;&#039;status&#039;&#039;&lt;br /&gt;
:* id is the id from http_request that maps to the specific request&lt;br /&gt;
:* sending a response to the requestor will clear the request and delete information associated with it&lt;br /&gt;
* &#039;&#039;&#039;[[LlGetHTTPHeader|string llGetHTTPHeader(key id, string header)]]&#039;&#039;&#039;&lt;br /&gt;
: Returns the string for the specified header in the specified request. All received headers are converted to lower case and this function is case-sensitive.  The returned string is limited to 255 characters.&lt;br /&gt;
:* Supported headers are:&lt;br /&gt;
::* &amp;quot;x-script-url&amp;quot;: The base url, as originally received from [[llRequestURL]] or [[llRequestSecureURL]].&lt;br /&gt;
::* &amp;quot;x-path-info&amp;quot;: Any trailing path information from the requested url&lt;br /&gt;
::* &amp;quot;x-query-string&amp;quot;: Any query arguments, the text past a ? in the url&lt;br /&gt;
::* &amp;quot;x-remote-ip&amp;quot;: IP address of the host that made the request&lt;br /&gt;
::* &amp;quot;user-agent&amp;quot;: The user-agent header as reported by the requester&lt;br /&gt;
:* Supported headers sent by &#039;&#039;&#039;[[LlHTTPRequest|llHTTPRequest()]]&#039;&#039;&#039;&lt;br /&gt;
::* &amp;quot;x-secondlife-shard&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-object-name&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-object-key&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-region&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-position&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-rotation&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-local-velocity&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-owner-name&amp;quot;&lt;br /&gt;
::* &amp;quot;x-secondlife-owner-key&amp;quot;&lt;br /&gt;
 requested url: &#039;&#039;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/foo/bar?arg=gra&#039;&#039;&lt;br /&gt;
 x-script-url: &#039;&#039;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&#039;&#039;&lt;br /&gt;
 x-path-info: &#039;&#039;/foo/bar&#039;&#039;&lt;br /&gt;
 x-query-string: &#039;&#039;arg=gra&#039;&#039;&lt;br /&gt;
: This header information is valid for 30 seconds, or until [[llHTTPResponse]] is called.&lt;br /&gt;
* &#039;&#039;&#039;[[Changed|changed(integer change)]]&#039;&#039;&#039;&lt;br /&gt;
:* [[CHANGED_REGION_START]]: New changed() event triggered on region startup.&lt;br /&gt;
* &#039;&#039;&#039;[[LlGetFreeURLs|integer llGetFreeURLs()]]&#039;&#039;&#039;&lt;br /&gt;
: Returns the number of URLs available to this script.&lt;br /&gt;
&lt;br /&gt;
== URL Lifetime Limitations ==&lt;br /&gt;
* URLs are &#039;&#039;&#039;temporary&#039;&#039;&#039;!&lt;br /&gt;
* URLs will be lost in the following cases, all detectable by the script events listed with them.&lt;br /&gt;
** On object derez/rez: [[on_rez]]&lt;br /&gt;
** On script save/reset: &#039;&#039;[[default]] [[state_entry]]() (trickier in multi-state scripts)&lt;br /&gt;
** On region cross or TP(attachments): [[changed]]() {{LSLGC|Events|event}}, [[CHANGED_REGION]] and [[CHANGED_TELEPORT]]&lt;br /&gt;
** On region restart: [[changed]]() event, &#039;&#039;new&#039;&#039; flag [[CHANGED_REGION_START]]&lt;br /&gt;
* When urls are &#039;lost&#039; it means that all public urls for that script are gone, new ones will need to be requested and the new urls will &#039;&#039;&#039;&#039;&#039;not&#039;&#039;&#039;&#039;&#039; resemble the old ones.&lt;br /&gt;
* Maintaining persistent URLs will require building or using an external service similar to how [http://en.wikipedia.org/wiki/Dynamic_DNS Dynamic DNS] services work for tying domain names to dynamic IP addresses.&lt;br /&gt;
&lt;br /&gt;
Contributed HTTP-in URL mapping implementations and services:&lt;br /&gt;
* A Dynamic DNS service running on Google App Engine (contributed as an example) can be found in the forums [http://forums-archive.secondlife.com/54/33/323981/1.html here].&lt;br /&gt;
* The [http://wiki.apez.biz/URLMap_API Virtual ID URLMap service] provides mapping from a static subdomain of your choice via a REST API (part of the free [http://www.apez.biz Apez Corp] [http://wiki.apez.biz/Development web-services API]).&lt;br /&gt;
* Yet another one, running on GAE, with password protected and private domains.  http://wiki.secondlife.com/wiki/Public_Object_DNS&lt;br /&gt;
* The [http://www.silverday.net/sqndns SilverDay ObjectDNS] is an easy to use dns-mapping-service with many configurable options (password protection, write protection, etc.) and an optional web-interface. The scripts are available here on the wiki (LSL-Script Library/[[Silverday ObjectDNS]]).&lt;br /&gt;
&lt;br /&gt;
== Resource Limitations ==&lt;br /&gt;
* There are a limited number of URLs available in each region, split by land ownership exactly like prim limits.&lt;br /&gt;
** Use [[llGetFreeURLs]] to get the exact number of available URLs for the script.&lt;br /&gt;
** The number of allowed URLs is the same as the number of allowed prims on the parcel the object is over.&lt;br /&gt;
**: &#039;&#039;Object owner does not matter, all objects over a parcel will use the resource pool for that parcel.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;Like prims, all the parcels owned by the same owner and in the same region share the same pool of resources.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;If you have two parcels in a region that each support 100 URLs, then you could use all 200 in object(s) on a single parcel.&#039;&#039;&lt;br /&gt;
** The region&#039;s object bonus factor does not apply to available URLs.&lt;br /&gt;
**: &#039;&#039;If a parcel has a max of 300 prims in a region with a 2x bonus factor there will only be 150 urls allowed.&#039;&#039;&lt;br /&gt;
* Each resident has their own unique pool of available URLs with a max of 38 URLs per resident.&lt;br /&gt;
** This is 1 per attachment point, but all 38 could be used by a single attachment for example.&lt;br /&gt;
* Vehicles are special and lazily moved to resident pools by the following logic:&lt;br /&gt;
** Any object that has a resident sitting on it is a &#039;vehicle&#039;&lt;br /&gt;
** Vehicles will use the url resources from the parcel they are over until the cross a parcel border.&lt;br /&gt;
**: &#039;&#039;Specifically this prevents anyone from breaking your vending machine by sitting on it and making it a &#039;vehicle&#039;.&#039;&#039;&lt;br /&gt;
** When any object using URL resources with a resident sitting on it crosses a parcel boundary the resources will switch to the first sitting resident with enough resources.  If no sitting agents have enough resources then the resources from the parcel being moved onto will be used.  If even then there are not enough resources to use then the vehicle will be blocked from moving.&lt;br /&gt;
**: &#039;&#039;In short we do everything we can to find a pool to host the resources needed by the vehicle, but will block movement if we can&#039;t.&#039;&#039;&lt;br /&gt;
* Parcel Sale: When a parcel is sold such that it changes the total available URLs in the region for either resident (seller or buyer) such that more URLs are being used than are available some objects will be returned.  &lt;br /&gt;
** The objects returned will be from youngest object to oldest object of those using URLs in each category in order of object category: Temporary, Other, Group, Owner, Selected/Sat upon.&lt;br /&gt;
**: &#039;&#039;The &#039;&#039;&#039;only&#039;&#039;&#039; time objects are possibly returned is when parcels change owner, and only if more resources are being used than allowed.&#039;&#039;&lt;br /&gt;
**: &#039;&#039;We return youngest temporary objects before older temporary objects before younger &#039;other&#039; (owned by non-group, non-parcel-owner) objects etc.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Other Limitations ==&lt;br /&gt;
* Size of the body of the requests will be [[limit]]ed to 2k [[bytes]].&lt;br /&gt;
* Size of headers of requests will be limited to 255 bytes. This is per header, not total.&lt;br /&gt;
* The size of responses to requests is not currently limited, but this is subject to review during testing.&lt;br /&gt;
* The content type of the returned data is always &#039;text/plain; charset=utf-8&#039;&lt;br /&gt;
*: &#039;&#039;Allowing more content type options is a possibility for the future, but not guaranteed.&#039;&#039;&lt;br /&gt;
* There is a cap of 64 in flight requests per script. This is based on the maximum number of pending events in LSL. After hitting the 64 request limit, the simulator cap server returns &#039;503 Service Unavailable&#039; to the inbound request.&lt;br /&gt;
* &#039;&#039;We may throttle the rate we accept hits at the CAP server level as well.  This is possible, but has not yet been decided.&#039;&#039;&lt;br /&gt;
* HTML cannot be used without an external parser, as all output is plain text only. If making such a parser, remember that you should probably restrict access to only Linden Lab HTML URLs as to not have your bandwith stolen.&lt;br /&gt;
* It is important to note that when appending a query string to a cap URL there MUST be a trailing slash between the cap guid and the query string token &#039;?&#039;. IE https://sim123.agni.lindenlab.com/cap/f73b4b94-012d-44f2-bd0c-16c328321221?arg=gra will return an HTTP 500, but https://sim123.agni.lindenlab.com/cap/f73b4b94-012d-44f2-bd0c-16c328321221/?arg=gra will succeed. (This doesn&#039;t seem to be true.)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[LSL_http_server/examples | Script Examples]]&lt;br /&gt;
* [[LSL_http_server/design | Design Document]]&lt;br /&gt;
* Design Jira:{{jira|SVC-1086}}&lt;br /&gt;
&lt;br /&gt;
{{LSLC|HTTP}}&lt;br /&gt;
{{LSLC|Communications}}&lt;/div&gt;</summary>
		<author><name>Stickman Ingmann</name></author>
	</entry>
</feed>