-- This one script placed on a multiple number of objects will track the number
-- of clicks user has made using a Global Variable
-- note: the GetGlobal/SetGlobal functions are client side
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
key = "clicktracker"
OnClick = function()
local currentClicks = Space.Shared.GetGlobal(namespace, key)
if currentClicks == nil then
currentClicks = 1
else
currentClicks = currentClicks + 1
end
Space.Shared.SetGlobal(namespace, key, currentClicks)
Space.Log("Total Clicks = " .. currentClicks)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
-- This one script placed on a multiple number of objects will track the number
-- of clicks user has made using a Global Variable
-- note: the GetGlobal/SetGlobal functions are client side
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
key = "clicktracker"
OnClick = function()
local currentClicks = Space.Shared.GetGlobal(namespace, key)
if currentClicks == nil then
currentClicks = 1
else
currentClicks = currentClicks + 1
end
Space.Shared.SetGlobal(namespace, key, currentClicks)
Space.Log("Total Clicks = " .. currentClicks)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
GetSuperGlobal
DynValue GetSuperGlobal(string ns, string key)
Retrieves a previously set super global variable, or returns nil.
--these two scripts are in two different regions but script B will know that you came from A
--REGION A script
username = Space.Scene.PlayerAvatar.Username
region = Space.Scene.Name
Space.Shared.SetSuperGlobal (username, "Last Location", region)
--REGION B script
username = Space.Scene.PlayerAvatar.Username
region = Space.Shared.GetSuperGlobal (username, "Last Location")
Space.Dialogues.SendLocalChat ("You have arrived from ".. region, "Last Location")
Makes func into a global function that can be accessed anywhere.
Parameter
Type
Description
function someFunction(name)
Space.Log("Hello " .. name);
end
Space.Shared.RegisterFunction("com.someNameHere.world", "func", someFunction);
--Script placed on object A will allow other objects to call one of it's registered functions when clicked
--Script in Object A
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
LogFunction = function(Parameter)
Space.Log("I've been called with parameter: " .. Parameter)
end
Space.Shared.RegisterFunction(namespace, "Log", LogFunction)
-- Script in Other Objects
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
OnClick = function()
Space.Shared.CallFunction(namespace, "Log", {"Example"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
-- Script A: Receiver
function someFunction(status)
if status == "start"
then Space.Log("Do receiver 1 procedures.")
end
end
Space.Shared.RegisterBroadcastFunction("com.someNameHere.world", "func", someFunction);
-- Script B: Another Receiver
function someFunction(status)
if status == "start"
then Space.Log("Do receiver 2 procedures.")
end
end
Space.Shared.RegisterBroadcastFunction("com.someNameHere.world", "func", someFunction);
--Script C: Sender
local ball = Space.Host.ExecutingObject;
ball.SubscribeToEvents();
function onDown()
local queue = Space.Shared.CallBroadcastFunction("com.someNameHere.world", "func", {"start"});
Space.Log("number in queue: " .. queue);
Space.Shared.UnregisterBroadcastFunction("com.someNameHere.world", "func", someFunction);
Space.Log("UnregisterBroadcastFunction");
end
ball.OnMouseDown(onDown);
--Script placed on object A will allow other objects to call one of it's registered functions when clicked
--Script in Object A
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
LogFunction = function(Parameter)
Space.Log("I've been called with parameter: " .. Parameter)
end
Space.Shared.RegisterFunction(namespace, "Log", LogFunction)
-- Script in Other Objects
thisObject = Space.Host.ExecutingObject
namespace = "com.example.shared"
OnClick = function()
Space.Shared.CallFunction(namespace, "Log", {"Example"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)