summaryrefslogtreecommitdiff
path: root/indra/newview/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/scripts')
-rw-r--r--indra/newview/scripts/lua/require/LLAgent.lua4
-rw-r--r--indra/newview/scripts/lua/test_animation.lua28
2 files changed, 32 insertions, 0 deletions
diff --git a/indra/newview/scripts/lua/require/LLAgent.lua b/indra/newview/scripts/lua/require/LLAgent.lua
index 56907f53cd..07ef1e0b0b 100644
--- a/indra/newview/scripts/lua/require/LLAgent.lua
+++ b/indra/newview/scripts/lua/require/LLAgent.lua
@@ -53,6 +53,8 @@ function LLAgent.removeCamParams()
leap.send('LLAgent', {op = 'removeCameraParams'})
end
+-- Play specified animation by "item_id" locally
+-- if "inworld" is specified as true, animation will be played inworld instead
function LLAgent.playAnimation(...)
local args = mapargs('item_id,inworld', ...)
args.op = 'playAnimation'
@@ -63,6 +65,8 @@ function LLAgent.stopAnimation(item_id)
return leap.request('LLAgent', {op = 'stopAnimation', item_id=item_id})
end
+-- Get animation info by "item_id"
+-- reply contains "duration", "is_loop", "num_joints", "asset_id", "priority"
function LLAgent.getAnimationInfo(item_id)
return leap.request('LLAgent', {op = 'getAnimationInfo', item_id=item_id}).anim_info
end
diff --git a/indra/newview/scripts/lua/test_animation.lua b/indra/newview/scripts/lua/test_animation.lua
new file mode 100644
index 0000000000..c16fef4918
--- /dev/null
+++ b/indra/newview/scripts/lua/test_animation.lua
@@ -0,0 +1,28 @@
+LLInventory = require 'LLInventory'
+LLAgent = require 'LLAgent'
+
+-- Get 'Animations' folder id (you can see all folder types via LLInventory.getFolderTypeNames())
+animations_id = LLInventory.getBasicFolderID('animatn')
+-- Get animations from the 'Animation' folder (you can see all folder types via LLInventory.getAssetTypeNames())
+anims = LLInventory.collectDescendentsIf{folder_id=animations_id, type="animatn"}.items
+
+local anim_ids = {}
+for key in pairs(anims) do
+ table.insert(anim_ids, key)
+end
+
+-- Start playing a random animation
+math.randomseed(os.time())
+local random_id = anim_ids[math.random(#anim_ids)]
+local anim_info = LLAgent.getAnimationInfo(random_id)
+
+print("Starting animation locally: " .. anims[random_id].name)
+print("Loop: " .. anim_info.is_loop .. " Joints: " .. anim_info.num_joints .. " Duration " .. tonumber(string.format("%.2f", anim_info.duration)))
+LLAgent.playAnimation{item_id=random_id}
+
+-- Stop animation after 3 sec if it's looped or longer than 3 sec
+if anim_info.is_loop == 1 or anim_info.duration > 3 then
+ LL.sleep(3)
+ print("Stop animation.")
+ LLAgent.stopAnimation(random_id)
+end