wiki.sine.space | sinespace

Difference between revisions of "Scripting/SShared"

From wiki.sine.space
Jump to: navigation, search
(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...")
 
Line 1: Line 1:
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  
+
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]].
 
+
namespace is required. This class does not replace [[Scripting/SNetwork]].
+
  
 
=Members=
 
=Members=

Revision as of 18:55, 25 July 2017

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