wiki.sine.space | sinespace

Scripting/SShared

From wiki.sine.space
Revision as of 18:55, 25 July 2017 by Ashasekayi (Talk | contribs) (Created page with "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...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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);