Find (string name)
Finds a single Game Object matching 'Name' and returns it. Can use '/' characters to designate a path (e.g. 'Parent/Child' returns Child with 'Parent')
FindID (string id)
Finds a single Game Object using ID and returns it
void MarkObjectTemporary ( obj)
Marks the Game Object as temporary. Temporary objects will be cleaned up automatically if the script is destroyed or reset. Can be used to handle cleanup from procedural objects created by a script.
GetAvatar (long id) GetAvatar (string name)
Get reference to an avatar
CreateGameObject (string name) CreateGameObject ( resource)
Creates a game object from the specified resource
void SwitchToInstance (uint id)
Switch to a shard region.
void OnPlayerJoin (Closure e)
Event which fires whenever a player joins the region
void OnPlayerLeave (Closure e)
Event which fires whenever a player leaves the region
void OnEditModeStart (Closure e)
An event which is fired when player enters Room Edit mode
void OnEditModeEnd (Closure e)
An event which is fired when player exits Room Edit mode
void OnEditModeAdd (Closure e)
An event which is fired when object is added during Edit Mode
void OnEditModeRemove (Closure e)
An event which is fired when object is deleted during Edit Mode
PlayerAvatar get
Returns the current player avatar. If this script is calling this upon initialisation, the Player may not exist yet, and you will want to wait a few frames until the avatar is present before continuing.
[] Avatars get
Returns a list of Avatars in the scene
List< > AllAvatars get
Returns a list of all avatars in the scene. The player avatar that is calling this will be added to the end of the list.
int Population get
Property Description
[] Objects get
Returns a list of Objects in the scene. IMPORTANT: This function is slow, you should cache the result and avoid calling this every frame.
string Name get
Returns the name of the current region
string Url get
Returns the URL of the current region
long RegionID get
Returns the region ID of current region.
long InstanceID get
Return the instance ID of current region.
long Owner get
Returns the avatar ID of the regions owner
bool PlayerIsOwner get
Returns whether the current player is the owner of the region
bool PlayerIsAdmin get
Does this Player have the Admin role?
bool PlayerIsModerator get
Does this Player have the Moderator role?
bool PlayerIsDeveloper get
Does this Player have the Developer role?
bool PlayerIsTrusted get
Does this Player have the Trusted role?
bool IsInEditMode get
Returns true if current player is in edit mode.
[] Floors get
Return an array of all floors in the region.
[] Landmarks get
Return all Landmarks in the region
bool get
bool get
bool get
bool get
bool get
bool get
SGameObject[] get
SLandmark[] get
SGameObject Find (string name)
SGameObject FindID (string id)
void MarkObjectTemporary (SGameObject obj)
SGameObject CreateGameObject (string name) SGameObject CreateGameObject (SResource resource)
void SwitchToInstance (uint id)
void OnPlayerJoin (Closure e)
void OnPlayerLeave (Closure e)
void OnEditModeStart (Closure e)
void OnEditModeEnd (Closure e)
void OnEditModeAdd (Closure e)
SAvatar PlayerAvatar get
SAvatar[] Avatars get
List< SAvatar > AllAvatars get
int Population get
SGameObject[] Objects get
string Name get
string Url get
long RegionID get
long InstanceID get
e
Closure (Callback)
e(SAvatar)
e
Closure (Callback)
e(long)
void (Closure e)
long get
Space.Scene.Find('Door2')hand = Space.Scene.Find("Hand");
--This returns the GameObject named Hand.
hand = Space.Scene.Find("/Hand");
--This returns the GameObject named Hand.
--Hand must not have a parent in the Hierarchy view.
hand = Space.Scene.Find("/Monster/Arm/Hand");
--This returns the GameObject named Hand,
--which is a child of Arm > Monster.
--Monster must not have a parent in the Hierarchy view.
hand = Space.Scene.Find("Monster/Arm/Hand");
--This returns the GameObject named Hand,
--which is a child of Arm > Monster. --add Scene Object Database to a Gameobject, set "123" to IDs and name the GameObject "Cube".
local obj=Space.Scene.FindID("123")
Space.Log(obj.Name);
--print "Cube" if the object exists.Space.Scene.MarkObjectTemporary(AnObjectReference)theAvatar =Space.Scene.GetAvatar(43)
--or
theAvatar =Space.Scene.GetAvatar("TestUser")Space.Scene.CreateGameObject('NewBall')
--or
Space.Scene.CreateGameObject(Space.Resources[1])--clicking this object will create a GameObject from a resource and place it above our avatar
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
resource = Space.GetResource("Tomato") --add it as resource in your Scripting Runtime component
OnClick = function()
createdObject = Space.Scene.CreateGameObject(resource)
createdObject.WorldPosition = thisPlayer.GameObject.WorldPosition + thisPlayer.GameObject.Up
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)Space.Scene.SwitchToInstance(2)--Place this script in a UIText object and it will
--update itself with the name of the last player joined
function updateText(Av) --we include "Av" here because the event gives us a reference to the Avatar that joined
Space.Host.ExecutingObject.UIText.Text= "Last player joined: " .. Av.Username
end
Space.Scene.OnPlayerJoin(updateText) -- updateText will now be called everytime a player joins function playerLeft(id)
--
end
Space.Scene.OnPlayerLeave(playerLeft) --Place this script in a UIText object and it will
--update itself with the name of the last player left
function updateText(Av) --we include "Av" here because the event gives us a reference to the Avatar that has left
Space.Host.ExecutingObject.UIText.Text= "Last player left: " .. Av.Username
end
Space.Scene.OnPlayerLeave(updateText) -- updateText will now be called every time a player leavesSpace.Scene.OnEditModeStart(AFunctionName)--makes an object become active upon entering edit mode
thisObject = Space.Host.ExecutingObject
targetObject = Space.Host.GetReference("target") --add to references in Scripting Runtime component
function OnEditModeFunction()
targetObject.Active = true
end
Space.Scene.OnEditModeStart(OnEditModeFunction)Space.Scene.OnEditModeEnd(AfunctionName)--makes an object become active upon exiting edit mode
thisObject = Space.Host.ExecutingObject
targetObject = Space.Host.GetReference("target") --add to references in Scripting Runtime component
function OnEditModeFunction()
targetObject.Active = false
end
Space.Scene.OnEditModeEnd(OnEditModeFunction)Space.Scene.OnEditModeAdd(AFunctionName)--prints the total number of objects in the scene whenever a new object is added in edit mode
function OnEditModeFunction()
Space.Log(#Space.Scene.Objects)
end
Space.Scene.OnEditModeAdd(OnEditModeFunction)Space.Scene.OnEditModeRemove(AFunctionName)--prints the total number of objects in the scene whenever a new object is removed in edit mode
function OnEditModeFunction()
Space.Log(#Space.Scene.Objects)
end
Space.Scene.OnEditModeRemove(OnEditModeFunction) CurrentPlayer = Space.Scene.PlayerAvatar avatars = Space.Scene.Avatars --this script, once clicked, will get all avatars in the scene
--and print their ID, Username and Title (excluding self)
--(Example: scoreboards/radars/scanners/game machines)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
Avatars = Space.Scene.Avatars
if #Avatars > 0 then
for var=1, #Avatars do
local ID = Avatars[var].ID
local Username = Avatars[var].Username
local Title = Avatars[var].Title
if Title == "" then Title = "None" end
Space.Log("ID: " .. ID .. ", Username: " .. Username .. ", Title: " .. Title)
end
else
Space.Log("No Avatars")
end
end
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to print all avatars' information"
thisGameObject.Clickable.OnClick(OnClick) local avatars=Space.Scene.AllAvatars
Space.Log(#avatars)
--Print the length of AllAvatars. --this script, once clicked, will get all avatars in the scene
--and print their ID, Username and Title (including self)
--(Example: scoreboards/radars/scanners/game machines)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
allAvatars = Space.Scene.AllAvatars
for var=1, #allAvatars do
local ID = allAvatars[var].ID
local Username = allAvatars[var].Username
local Title = allAvatars[var].Title
if Title == "" then Title = "None" end
Space.Log("ID: " .. ID .. ", Username: " .. Username .. ", Title: " .. Title)
end
end
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to print all avatars' information"
thisGameObject.Clickable.OnClick(OnClick) currentPopulation = Space.Scene.Population objects = Space.Scene.Objects --clicking this object will print a name of every object in the scene
--[better use a coroutine incase the foor loop exceeds allowed frame time]
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
local objects = Space.Scene.Objects
for i=1, #objects, 1 do
Space.Log(objects[i].Name)
end
end
thisObject.AddClickable()RegionName = Space.Scene.Name --this object will be clickable only if it is in a region called "X Region"
--((for example: limiting object functionality to a specific region))
thisObject = Space.Host.ExecutingObject
OnClick = function()
Space.Log("We are in X Region")
end
if Space.Scene.Name == "X Region" then
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
endRegionUrl = Space.Scene.Url --the URL of this region will be placed in a UIText upon loading
--and also printed if this object is clicked
thisObject = Space.Host.ExecutingObject
textObject = Space.Host.GetReference("textObject") -- add to scripting runtime references
function OnClick()
Space.Log(Space.Scene.Url)
end
textObject.UIText.Text = Space.Scene.Url
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)Space.Log(Space.Scene.RegionID)--the RegionID of this region will be placed in a UIText upon loading
--and also printed if this object is clicked
thisObject = Space.Host.ExecutingObject
textObject = Space.Host.GetReference("textObject") -- add to scripting runtime references
function OnClick()
Space.Log(Space.Scene.RegionID)
end
textObject.UIText.Text = Space.Scene.RegionID
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)instanceID = Space.Scene.InstanceID--the RegionID of this region will be placed in a UIText upon loading
--and also printed if this object is clicked
thisObject = Space.Host.ExecutingObject
textObject = Space.Host.GetReference("textObject") -- add to scripting runtime references
function OnClick()
Space.Log(Space.Scene.InstanceID)
end
textObject.UIText.Text = Space.Scene.InstanceID
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)RegionOwner = Space.Scene.Owner--this script will make this object only clickable for the region owner
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar
OnClick = function()
Space.Log("Do Something")
end
if thisPlayer.ID == Space.Scene.Owner then
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
endisOwner = Space.Scene.PlayerIsOwner --this script will make the object a clickable, but only if player is region owner
--(Example: Access control)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
Space.Log("this click was only possible because you are a region Owner")
end
if Space.Scene.PlayerIsOwner then
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me"
thisGameObject.Clickable.OnClick(OnClick)
endSpace.Scene.PlayerIsAdmin--this script will make the object a clickable, but only if player is region Admin
--(Example: Access control)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
Space.Log("this click was only possible because you are a region Admin")
end
if Space.Scene.PlayerIsAdmin then
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me Admin"
thisGameObject.Clickable.OnClick(OnClick)
endplayerIsModerator = Space.Scene.PlayerIsModerator--this script will make the object a clickable, but only if player is Moderator in this region
--(Example: Access control)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
Space.Log('this click was only possible because you are Moderator in this region')
end
if Space.Scene.PlayerIsModerator then
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me Moderator"
thisGameObject.Clickable.OnClick(OnClick)
endplayerIsDeveloper = Space.Scene.PlayerIsDeveloperplayerIsTrusted = Space.Scene.PlayerIsTrusted--this script will make the object a clickable, but only if player is Trusted in this region
--(Example: Access control)
thisGameObject = Space.Host.ExecutingObject
OnClick = function()
Space.Log("this click was only possible because you are Trusted in this region")
end
if Space.Scene.PlayerIsTrusted then
thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me Trusted"
thisGameObject.Clickable.OnClick(OnClick)
endSpace.Log(Space.Scene.IsInEditMode)--makes an object only active when this player is in Edit Mode
thisObject = Space.Host.ExecutingObject
targetObject = Space.Host.GetReference("target") --add to references in Scripting Runtime component
function OnUpdateFunction()
targetObject.Active = Space.Scene.IsInEditMode
end
thisObject.OnUpdate(OnUpdateFunction)for i=1,#Space.Scene.Floors do
Space.Log(Space.Scene.Floors[i].Name)
end
--print all floor names.example 2 local landmark = Space.Scene.Landmarks
for i = 1,#landmark do
if landmark[i].Type == LandmarkType.LandingZone then
Space.Log("LandingZone")
end
Space.Log(landmark[i].Name .. " ".. landmark[i].Position.ToString())
end