wiki.sine.space | sinespace

Scripting/SShared

From wiki.sine.space
Revision as of 18:55, 25 July 2017 by Ashasekayi (Talk | contribs)

Jump to: navigation, search

The SShared class provides IPC methods that allow scripts to communicate with each other and objects to be passed between scripts. Variables are shared between scripts, so a namespace is required. This class does not replace Scripting/SNetwork.

Members

SetGlobal

void SetGlobal (string namespace, string key, DynValue value);


Space.Shared.SetGlobal("com.someNameHere.world", "version", "1.02");


GetGlobal

DynValue GetGlobal (string namespace, string key);

Retrieves a previously set global variable, or returns nil.

local versionValue = Space.Shared.GetGlobal("com.someNameHere.world", "version");


RegisterFunction

void RegisterFunction (string ns, string func, Closure reference);
Makes func into a global function that can be accessed anywhere.
function someFunction(name)

  Space.Log("Hello " .. name);
end

Space.Shared.RegisterFunction("com.someNameHere.world", "func", someFunction);


CallFunction

void CallFunction (string ns, string func, IEnumerable< DynValue > args);

Calls the registered function with the specified arguments.

Space.Shared.CallFunction("com.someNameHere.world", "func",{"Smith"});


RegisterBroadcastFunction

void RegisterBroadcastFunction (string ns, string func, Closure reference);

Makes func into a global function that can be accessed anywhere.

function someFunction(name)

  Space.Log("Hello " .. name);
end

Space.Shared.RegisterBroadcastFunction("com.someNameHere.world", "func", someFunction);



CallBroadcastFunction

int CallBroadcastFunction ((string ns, string func, IEnumerable< DynValue > args);

Calls every registered broadcast function with the specified arguments,

and returns the number of calls queued.

-- 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);
end


ball.OnMouseDown(onDown);