summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-03-14 11:24:51 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-03-14 11:24:51 -0400
commitbac113e30d987d7884c58490e6ea39a1bbd87d05 (patch)
tree0620f4bab572b1cd38ba8e8db03130b1e65ec1f7 /indra/newview
parente9231a987d64d2ad7e19dee30645409cab0b48e5 (diff)
Add preliminary Lua viewer API modules, with test scripts.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/scripts/lua/LLFloaterAbout.lua11
-rw-r--r--indra/newview/scripts/lua/LLGesture.lua23
-rw-r--r--indra/newview/scripts/lua/UI.lua16
-rw-r--r--indra/newview/scripts/lua/test_LLFloaterAbout.lua14
-rw-r--r--indra/newview/scripts/lua/test_LLGesture.lua32
5 files changed, 96 insertions, 0 deletions
diff --git a/indra/newview/scripts/lua/LLFloaterAbout.lua b/indra/newview/scripts/lua/LLFloaterAbout.lua
new file mode 100644
index 0000000000..44afee2e5c
--- /dev/null
+++ b/indra/newview/scripts/lua/LLFloaterAbout.lua
@@ -0,0 +1,11 @@
+-- Engage the LLFloaterAbout LLEventAPI
+
+leap = require 'leap'
+
+local LLFloaterAbout = {}
+
+function LLFloaterAbout.getInfo()
+ return leap.request('LLFloaterAbout', {op='getInfo'})
+end
+
+return LLFloaterAbout
diff --git a/indra/newview/scripts/lua/LLGesture.lua b/indra/newview/scripts/lua/LLGesture.lua
new file mode 100644
index 0000000000..cb410446d7
--- /dev/null
+++ b/indra/newview/scripts/lua/LLGesture.lua
@@ -0,0 +1,23 @@
+-- Engage the LLGesture LLEventAPI
+
+leap = require 'leap'
+
+local LLGesture = {}
+
+function LLGesture.getActiveGestures()
+ return leap.request('LLGesture', {op='getActiveGestures'})['gestures']
+end
+
+function LLGesture.isGesturePlaying(id)
+ return leap.request('LLGesture', {op='isGesturePlaying', id=id})['playing']
+end
+
+function LLGesture.startGesture(id)
+ leap.send('LLGesture', {op='startGesture', id=id})
+end
+
+function LLGesture.stopGesture(id)
+ leap.send('LLGesture', {op='stopGesture', id=id})
+end
+
+return LLGesture
diff --git a/indra/newview/scripts/lua/UI.lua b/indra/newview/scripts/lua/UI.lua
new file mode 100644
index 0000000000..f851632bad
--- /dev/null
+++ b/indra/newview/scripts/lua/UI.lua
@@ -0,0 +1,16 @@
+-- Engage the UI LLEventAPI
+
+leap = require 'leap'
+
+local UI = {}
+
+function UI.call(func, parameter)
+ -- 'call' is fire-and-forget
+ leap.send('UI', {op='call', ['function']=func, parameter=parameter})
+end
+
+function UI.getValue(path)
+ return leap.request('UI', {op='getValue', path=path})['value']
+end
+
+return UI
diff --git a/indra/newview/scripts/lua/test_LLFloaterAbout.lua b/indra/newview/scripts/lua/test_LLFloaterAbout.lua
new file mode 100644
index 0000000000..7abc437b79
--- /dev/null
+++ b/indra/newview/scripts/lua/test_LLFloaterAbout.lua
@@ -0,0 +1,14 @@
+-- test LLFloaterAbout
+
+LLFloaterAbout = require('LLFloaterAbout')
+leap = require('leap')
+coro = require('coro')
+inspect = require('inspect')
+
+coro.launch(function ()
+ print(inspect(LLFloaterAbout.getInfo()))
+ leap.done()
+end)
+
+leap.process()
+
diff --git a/indra/newview/scripts/lua/test_LLGesture.lua b/indra/newview/scripts/lua/test_LLGesture.lua
new file mode 100644
index 0000000000..5c0db6c063
--- /dev/null
+++ b/indra/newview/scripts/lua/test_LLGesture.lua
@@ -0,0 +1,32 @@
+-- exercise LLGesture API
+
+LLGesture = require 'LLGesture'
+inspect = require 'inspect'
+coro = require 'coro'
+leap = require 'leap'
+
+coro.launch(function()
+ -- getActiveGestures() returns {<UUID>: {name, playing, trigger}}
+ gestures_uuid = LLGesture.getActiveGestures()
+ -- convert to {<name>: <uuid>}
+ gestures = {}
+ for uuid, info in pairs(gestures_uuid) do
+ gestures[info.name] = uuid
+ end
+ -- now run through the list
+ for name, uuid in pairs(gestures) do
+ if name == 'afk' then
+ -- afk has a long timeout, and isn't interesting to look at
+ continue
+ end
+ print(name)
+ LLGesture.startGesture(uuid)
+ repeat
+ sleep(1)
+ until not LLGesture.isGesturePlaying(uuid)
+ end
+ print('Done.')
+ leap.done()
+end)
+
+leap.process()