SScript
Functions
TypeName
string TypeName (DynValue dv)
Return the type name of the value.
| Parameter | Type | Description |
|---|---|---|
| dv | DynValue |
- Lua
typeName = Space.TypeName("123")
TrackingAllowed
bool TrackingAllowed (string key)
Returns true on white-label grids when the user has opted into tracking for the given key. Always returns false on the main grid.
| Parameter | Type | Description |
|---|---|---|
| key | string | A unique identifier used to store and look up the user's tracking consent. |
- Lua
isTrackingAllowed = Space.TrackingAllowed('3423423423423')
TrackingRequest
void TrackingRequest (string key, string privacynotice, Closure callback, bool force=false)
Displays a consent prompt (EULA-style) asking the user to allow tracking for a given key. On white-label grids, stores the user's choice and invokes the callback with a boolean indicating consent. On the main grid, this does nothing.
| Parameter | Type | Description |
|---|---|---|
| key | string | A unique identifier used to store and look up the user's tracking consent. |
| privacynotice | string | The privacy notice text to display in the consent dialog. |
| callback | Closure | A function invoked with one boolean parameter: true if allowed, false otherwise. |
| force | bool | If true, show the prompt even if a stored decision exists. Defaults to false. |
- Lua
-- Request consent (white-label only). The callback receives a boolean 'allowed'.
Space.TrackingRequest('24234234234234', 'A notice message', function(allowed)
if allowed then
Space.Log("Tracking allowed")
else
Space.Log("Tracking denied")
end
end)
-- or force re-prompt even if a decision was saved previously:
Space.TrackingRequest('24234234234234', 'A notice message', function(allowed) end, true)
GetResource
SResource GetResource (string name)
Returns a reference to a SResource using it's Resource name.
| Parameter | Type | Description |
|---|---|---|
| name | string | Name of the Resource as set in the Scripting Runtime Component (Resources section) |
- Lua
aResource = Space.GetResource("ResourceName")
LogEvent
void LogEvent (string eventName, float value, SVector position)
Logs an analytics event to the server on white-label grids.
| Parameter | Type | Description |
|---|---|---|
| eventName | string | The name of the analytics event. |
| value | float | A numeric value associated with the event. |
| position | SVector | A world position to associate with the event. |
- Lua
Space.LogEvent('event name', 2.0, Vector.New(0,0,0) )
Log
void Log (DynValue text, bool logToFile=false)
void Log (string text, bool logToFile=false)
Log a message to console.
| Parameter | Type | Description |
|---|---|---|
- Lua
Space.Log(Color.Blue)
--or
Space.Log("Log")
--or
Space.Log("Log",true)
Properties
Inventory
SInventory Inventory get
Allows access to the users inventory
- Lua
inventory = Space.Inventory
Persistence
SPersistence Persistence get
Stores information between user sessions, and for other users
- Lua
``` persistence = Space.Persistence ```
Scene
SScene Scene get
Allows access to the current scene graph (objects and avatars in the scene, and other information)
- Lua
scene = Space.Scene
Grid
SGrid Grid get
Property Description
- Lua
grid = Space.Grid
Host
SHost Host get
Access information about the current scripting runtime host
- Lua
host = Space.Host
Physics
SPhysics Physics get
Call physics-related commands, and variables, such as raycasting
- Lua
physics = Space.Physics
Math
SMath Math get
Math related functions (Sin, Cos, Tan, etc)
- Lua
Space.Math.Ceil(4.0)
String
SString String get
Miscellaneous additional string functions (e.g. MD5Sum)
- Lua
Space.String.GetBytes("some data")
Input
SInput Input get
Input device related functions (mouse position, keyboard state)
- Lua
Space.Input.Vibrate(1,1,false)
Camera
SCameraManager Camera get
Take and control the users camera
- Lua
obj = Space.Host.ExecutingObject
Space.Camera.LockCamera (obj)
WebServices
SWebService WebServices get
Call remote web services to designated hosts (will not work with arbitrary domains, see page for details)
- Lua
Space.WebServices.GetImage("example.com/mrlee.jpg")
Network
SNetwork Network get
Send data to other clients through the region server
- Lua
Space.Network.SubscribeToNetwork("helloworld", gotAMessageFunction)
PostFX
SPostFX PostFX get
Property Description
- Lua
Space.PostFX
AudioAnalyser
SAudioAnalyser AudioAnalyser get
Property Description
- Lua
Space.AudioAnalyser
Tween
STween Tween get
Property Description
- Lua
Space.Tween
UI
SUI UI get
Property Description
- Lua
ui = Space.UI
Dialogues
SDialogues Dialogues get
Property Description
- Lua
dialogues = Space.Dialogues
Shared
SShared Shared get
Property Description
- Lua
shared = Space.Shared
Quests
SQuests Quests get
Property Description
- Lua
quests = Space.Quests
Economy
SEconomy Economy get
Property Description
- Lua
economy = Space.Economy
Groups
SGroup Groups get
Property Description
- Lua
groups = Space.Groups
Activity
SActivity Activity get
Property Description
- Lua
``` activity = Space.Activity ```
RenderSettings
SRenderSettings RenderSettings get
Property Description
- Lua
renderSettings = Space.RenderSettings
Profile
SProfile Profile get
Property Description
- Lua
profile = Space.Profile
Photos
SPhotos Photos get
Property Description
- Lua
photos = Space.Photos
Videos
SVideos Videos get
Property Description
- Lua
videos = Space.Videos
MusicDirectory
SMusicDirectory MusicDirectory get
Property Description
- Lua
musicDirectory = Space.MusicDirectory
Journey
SJourney Journey get
Property Description
- Lua
journey = Space.Journey
GameTester
SGameTester GameTester get
Property Description
- Lua
gameTester = Space.GameTester
RuntimeType
string RuntimeType get
Return current RuntimeType name.
- Lua
runtimeType = Space.RuntimeType
Platform
string Platform get
Return current platform name.
- Lua
platform = Space.Platform
SessionID
string SessionID get
Return current SessionID.
- Lua
sessionID = Space.SessionID
InEditor
bool InEditor get
Return true if in unity editor.
- Lua
isInEditor = Space.InEditor
- Lua
--the below script checks if we are in Unity editor or in SS
--this way we can provide an alternative
--(Example: if we're using a function that doesn't work in Unity editor)
thisGameObject = Space.Host.ExecutingObject
if Space.InEditor then
avatarUsername = "Player Name"
else
avatarUsername = Space.Scene.GetAvatar(thisGameObject.Owner).Username --example: this doesn't work in Editor
end
Space.Log(avatarUsername)
Version
int Version get
Returns the numeric build version of the viewer (for programmatic comparisons). In the Unity Editor this returns int.MaxValue; if unknown at runtime it returns -1.
- Lua
viewerVersion = Space.Version
FullVersionString
string FullVersionString get
Returns the full build version display string tied to release notes (e.g., "2025.6f210"). Best for user-facing display and logging.
- Lua
viewerVersionString = Space.FullVersionString
Resources
SResource[] Resources get
Property Description
- Lua
tableOfResources = Space.Resources
- Lua
--the below script will search through the Scripting Runtime's resources
--and return the first instance of an Animation Clip
--[You need to add a few resources to the scripting runtime and make one of them an animation]
resources = Space.Resources
for i = 1, #resources do
if resources[i].Type == "AnimationClip" then
Space.Log("Resource #".. i .. " is an Animation Clip. The resource name is: " .. resources[i].Name)
break
end
end
Time
float Time get
Returns time at the beginning of this frame.
- Lua
floatTime = Space.Time
- Lua
--this script will update a UIText object with the current local time without using a coroutine
--(example: clock )
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
rateUpdate = 1.0
nextUpdate = 0.0
text = Space.Host.GetReference("Text").UIText
OnUpdate = function()
if Space.Time > nextUpdate then
nextUpdate = Space.Time + rateUpdate
text.Text = Space.LocalTime
end
}
Space.Host.ExecutingObject.OnUpdate(OnUpdate)
ServerTime
string ServerTime get
Returns current server time.
- Lua
serverTime = Space.ServerTime
- Lua
--this script will update a UIText object with the current server time (UTC)
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
co = function()
while true do
text.Text = Space.ServerTime
coroutine.yield(1)
end
end
Space.Host.StartCoroutine(co)
LocalTime
string LocalTime get
Returns current local time.
- Lua
localTime = Space.LocalTime
- Lua
--this script will update a UIText object with the current local time
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
co = function()
while true do
text.Text = Space.LocalTime
coroutine.yield(1)
end
end
Space.Host.StartCoroutine(co)
LoginTime
float LoginTime get
Returns how long player has been logged in (in seconds).
- Lua
loginTime = Space.LoginTime
- Lua
--this script will update a UIText object with how long the user has been logged in (in seconds)
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
co = function()
while true do
text.Text = Space.LoginTime
coroutine.yield(1)
end
end
Space.Host.StartCoroutine(co)
ServerTimeUnix
int ServerTimeUnix get
Returns the server time unix timestamp.
- Lua
serverTimeUnix = Space.ServerTimeUnix
- Lua
--this script will update a UIText object with the current server time unix timestamp
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
co = function()
while true do
text.Text = Space.ServerTimeUnix
coroutine.yield(1)
end
end
Space.Host.StartCoroutine(co)
LocalTimeUnix
int LocalTimeUnix get
Returns the local time unix timestamp.
- Lua
localTimeUnix = Space.LocalTimeUnix
- Lua
--this script will update a UIText object with the current local time unix timestamp
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
co = function()
while true do
text.Text = Space.LocalTimeUnix
coroutine.yield(1)
end
end
Space.Host.StartCoroutine(co)
DeltaTime
float DeltaTime get
The completion time in seconds since the last frame.
- Lua
deltaTime = Space.DeltaTime
- Lua
--the below script rotates an object around Y axis but uses DeltaTime
--to make sure it's not dependant on client's Framerate (FPS)
--this way the object rotates per second not per frame
--(Example: Important movement in OnUpdate)
thisGameObject = Space.Host.ExecutingObject
OnUpdate = function()
currentY = thisGameObject.WorldRotation.EulerAngles.Y
newRotation = Quaternion.Euler(0, currentY + 1 * Space.DeltaTime, 0) --We multiplied 1 by Space.DeltaTime
thisGameObject.WorldRotation = newRotation
end
thisGameObject.OnUpdate(OnUpdate)
PreviewServer
bool PreviewServer get
Return true if in preview server.
- Lua
isInPreview = Space.PreviewServer
- Lua
--this script will update a UIText object with "preview" or "live" depending
--whether we are on preview server or live server
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
text = Space.Host.GetReference("Text").UIText
OnUpdate = function()
if Space.PreviewServer then
text.Text = "Preview"
else
text.Text = "Live"
end
end
Space.Host.ExecutingObject.OnUpdate(OnUpdate)
ComponentName
string ComponentName get
The name of this component.
- Lua
componentName = Space.ComponentName