diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-07-20 20:51:06 +0100 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2017-07-20 20:51:06 +0100 |
commit | bbe5681d05d486d86f53d2adf3fa40b136c29df9 (patch) | |
tree | b08c9c82a4de756082a5e931b7ad04383466d72e | |
parent | 5610444d6450d5eb2e203be527116fe01d2d436a (diff) |
SL-751 - added test script move_in_circle_using_llSetRegionPos.lsl
-rw-r--r-- | scripts/testing/lsl/move_in_circle_using_llSetRegionPos.lsl | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/scripts/testing/lsl/move_in_circle_using_llSetRegionPos.lsl b/scripts/testing/lsl/move_in_circle_using_llSetRegionPos.lsl new file mode 100644 index 0000000000..5303b6f4f5 --- /dev/null +++ b/scripts/testing/lsl/move_in_circle_using_llSetRegionPos.lsl @@ -0,0 +1,98 @@ +integer listenHandle; +integer verbose; +integer num_steps = 50; +float circle_time = 5.0; +integer circle_step; +vector circle_pos; +vector circle_center; +float circle_radius; + +start_circle(vector center, float radius) +{ + vector currentPosition = llGetPos(); + circle_center = center; + circle_radius = radius; + circle_step = 0; + llSetTimerEvent(circle_time/num_steps); +} + +stop_circle() +{ + llSetTimerEvent(0); + llSetRegionPos(circle_center); +} + +next_circle() +{ + float rad = (circle_step * TWO_PI)/num_steps; + float x = circle_center.x + llCos(rad)*circle_radius; + float y = circle_center.y + llSin(rad)*circle_radius; + float z = circle_center.z; + llSetRegionPos(<x,y,z>); + circle_step = (circle_step+1)%num_steps; +} + +circle_path(vector center, float radius) +{ + integer i; + integer num_steps = 50; + float circle_time = 5.0; // seconds + for (i=0; i<num_steps; ++i) + { + float rad = (i * TWO_PI)/num_steps; + float x = center.x + llCos(rad)*radius; + float y = center.y + llSin(rad)*radius; + float z = center.z; + llSetRegionPos(<x,y,z>); + llSleep(circle_time/num_steps); + } +} + +default +{ + state_entry() + { + llSay(0, "Hello, Avatar!"); + listenHandle = llListen(-2001,"","",""); + verbose = 0; + } + + listen(integer channel, string name, key id, string message) + { + llOwnerSay("got message " + name + " " + (string) id + " " + message); + list words = llParseString2List(message,[" "],[]); + string command = llList2String(words,0); + string option = llList2String(words,1); + if (command=="anim") + { + if (option=="start") + { + start_circle(llGetPos(), 3.0); + } + else if (option=="stop") + { + stop_circle(); + } + } + if (command=="verbose") + { + if (option=="on") + { + verbose = 1; + } + else if (option=="off") + { + verbose = 0; + } + } + } + + timer() + { + next_circle(); + } +} + +// Local Variables: +// shadow-file-name: "$SW_HOME/axon/scripts/testing/lsl/move_in_circle_using_llSetRegionPos.lsl" +// End: |