Animated Attachments Test

==llTargetOmega==
* Create 3 boxes and color the top sides red.
* Link 2 of the boxes together.
* Add the following script to both objects and verify the objects are spinning counterclockwise with the red sides still on top.
//llTargetOmega script
default
{
 state_entry()
 {
 llTargetOmega(<0,0,1>, 2, 1);
 }
}
* Attach the objects to your avatar.
* Verify the objects are still spinning counterclockwise with the red sides still on top.
* Edit the script and change the 2 to -2.
* Verify the objects spin in the clockwise direction. 
* Add the following script to 2 boxes. 
default
{
 state_entry()
 {
 llOwnerSay("spin off");
 llTargetOmega(<0,0,1>, 0, 0);
 }
 touch_start(integer total_number)
 {state spin;}
}
state spin
{
 state_entry()
 {
 llOwnerSay("spin on");
 llTargetOmega(<0,0,1>, 2, 1);
 }
 touch_start(integer total_number)
 {state default;}
} 
* Link the boxes together.
* Touch each of the boxes and verify they start and stop spinning.
* Attach the object
* Touch each of the boxes and verify they start and stop spinning.
* When both boxes are spinning around their own center, teleport to a different sim. 
* Verify both boxes are still spinning around their own center. 
==llSetRot==
* Create 3 boxs and color the top sides red.
* Link 2 of the boxes together.
* Add the following script to both objects and verify the objects are spinning counterclockwise with the red sides still on top. 
//llSetRot script
float counter = 0;
default
{
 state_entry()
 {
 while(1)
 {
 llSetRot(llEuler2Rot(<0,0,counter>));
 counter = counter + 0.1;
 if (counter > TWO_PI) counter = 0;
 }
 }
}
* Attach the objects to your avatar.
* Verify the objects are still spinning counterclockwise with the red sides still on top.
* Edit the script and change the 0.1 to -0.1.
* Verify the object spins in the clockwise direction. 
==llSetLocalRot==
* Create 2 boxs, one above the other.
* Color the North face of the bottom box red.
* Color the Top face of the top box green.
* Select the top box, then the bottom box, and link them together.
* Add the following script to the child(top) box (select Edit Linked Parts to do this) 
//SetLocalRot script
float counter = 0;
default
{
 state_entry()
 {
 while(1)
 {
 llSetLocalRot(llEuler2Rot(<0,0, counter>));
 counter = counter + 0.2;
 if (counter > TWO_PI) counter = 0;
 }
 }
}
* Add the following script to the root object. 
//SetLocalRot script
float counter = 0;
default
{
 state_entry()
 {
 while(1)
 {
 llSetLocalRot(llEuler2Rot(<0,counter, 0>));
 counter = counter + 0.2;
 if (counter > TWO_PI) counter = 0;
 }
 }
}
* Attach the object to your head
* Verify the red side of the root object rotates from top to left shoulder to chest to right shoulder
* Verify the child object rotates along with the root object and also rotates around it's own green face 
== llSetPos ==
* Create 2 boxes and link them together.
* Edit the child object (with Edit Linked Parts) and add the following script. 
default
{
 state_entry()
 {
 llSay(0, "Hello, Avatar!");
 }
 touch_start(integer total_number)
 {
 float x = llFrand(40);
 float y = llFrand(40);
 float z = llFrand(40);
 llOwnerSay((string)x +", "+ (string)y +", "+ (string)z);
 llSetPos(<x,y,z>);
 }
}
* Click the child object a few times.
* Verify that the child object's position is restrained to 20m from your avatar. 
==Areas to expand this script:==
llSetScale
llGetScale
llGetLocalPos, llGetRootPosition
llGetRot, llGetRootRotation, llGetLocalRot
==Performance==
* Make animated attachments that can be activated/deactivated by anyone shouting "on" or "off"
* Get 20 people together wearing the animated attachments
* Turn all the attachments on and off, and compare your framerate and network traffic.
* Is your framerate affected?
* Is your network traffic significantly higher?
Category:Quality Assurance