All pages
Powered by GitBook
1 of 1

Loading...

SScene

Index

Functions Index

Function Name

Properties Index

Property Name

Functions

Find

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

Parameter
Type
Description

FindID

FindID (string id)

Finds a single Game Object using ID and returns it

Parameter
Type
Description

MarkObjectTemporary

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.

Parameter
Type
Description

GetAvatar

GetAvatar (long id) GetAvatar (string name)

Get reference to an avatar

Parameter
Type
Description

CreateGameObject

CreateGameObject (string name) CreateGameObject ( resource)

Creates a game object from the specified resource

Parameter
Type
Description

SwitchToInstance

void SwitchToInstance (uint id)

Switch to a shard region.

Parameter
Type
Description

OnPlayerJoin

void OnPlayerJoin (Closure e)

Event which fires whenever a player joins the region

Parameter
Type
Description

OnPlayerLeave

void OnPlayerLeave (Closure e)

Event which fires whenever a player leaves the region

Parameter
Type
Description

OnEditModeStart

void OnEditModeStart (Closure e)

An event which is fired when player enters Room Edit mode

Parameter
Type
Description

OnEditModeEnd

void OnEditModeEnd (Closure e)

An event which is fired when player exits Room Edit mode

Parameter
Type
Description

OnEditModeAdd

void OnEditModeAdd (Closure e)

An event which is fired when object is added during Edit Mode

Parameter
Type
Description

OnEditModeRemove

void OnEditModeRemove (Closure e)

An event which is fired when object is deleted during Edit Mode

Parameter
Type
Description

Properties

PlayerAvatar

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

[] Avatars get

Returns a list of Avatars in the scene

AllAvatars

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.

Population

int Population get

Property Description

Objects

[] 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.

Name

string Name get

Returns the name of the current region

Url

string Url get

Returns the URL of the current region

RegionID

long RegionID get

Returns the region ID of current region.

InstanceID

long InstanceID get

Return the instance ID of current region.

Owner

long Owner get

Returns the avatar ID of the regions owner

PlayerIsOwner

bool PlayerIsOwner get

Returns whether the current player is the owner of the region

PlayerIsAdmin

bool PlayerIsAdmin get

Does this Player have the Admin role?

PlayerIsModerator

bool PlayerIsModerator get

Does this Player have the Moderator role?

PlayerIsDeveloper

bool PlayerIsDeveloper get

Does this Player have the Developer role?

PlayerIsTrusted

bool PlayerIsTrusted get

Does this Player have the Trusted role?

IsInEditMode

bool IsInEditMode get

Returns true if current player is in edit mode.

Floors

[] Floors get

Return an array of all floors in the region.

Landmarks

[] 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)

SAvatar GetAvatar (long id) SAvatar GetAvatar (string name)

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)

SGameObject
SGameObject
SGameObject
SAvatar
SAvatar
SGameObject
SGameObject
SResource
SAvatar
SAvatar
SAvatar
SGameObject
SGameObject
SLandmark

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 leaves
Space.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)
end
RegionUrl = 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)
end
isOwner = 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) 
end
Space.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) 
end
playerIsModerator = 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) 
end
playerIsDeveloper = Space.Scene.PlayerIsDeveloper
playerIsTrusted = 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) 
end
Space.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
OnEditModeRemove
Owner
PlayerIsOwner
PlayerIsAdmin
PlayerIsModerator
PlayerIsDeveloper
PlayerIsTrusted
IsInEditMode
Floors
Landmarks