All pages
Powered by GitBook
1 of 1

Loading...

SAvatar

Functions

AttachTo

void AttachTo (SGameObject target)

Attaches the player to the target game object, keeping the avatar fixed in its current position/rotation relative to the target object (e.g. for use in Vehicles)

Parameter
Type
Description

Detach

void Detach ()

Detaches the avatar from whatever it may be attached to (only works for the player avatar), including chairs, vehicles and so forth.

OnAvatarAttached

void OnAvatarAttached ()

An event which fires whenever this avatar is attached to a game object in the current scene.

OnAvatarDetached

void OnAvatarDetached ()

An event which fires whenever this avatar is detached from a game object in the current scene.

LoadOutfit

void LoadOutfit (int outfitID)

Only works on a white-label deployment due to abuse concerns. Restrictions: The outfit ID needs to be one of the grid template outfits, with all the restrictions that apply to those (i.e. must use either SW content, or content uploaded by a grid admin account).

Parameter
Type
Description

ResetOutfit

void ResetOutfit ()

Reset current outfit. (white-label only)

Register

void Register (string username, string password, string email, bool subscribeToSinespaceNewsletter=false, Closure onSuccess=null, Closure onError=null)

Allow a guest to register. (white-label only)

Parameter
Type
Description

ResetOutfitToTemplate

void ResetOutfitToTemplate (int outfitID)

Reset current outfit to a specific template. (white-label only)

Parameter
Type
Description

FindBone

FindBone (string bone)

Retrieves the specified humanoid bone as an SGameObject. Requires a Humanoid rig; returns nil if the bone is missing or the avatar is non‑humanoid. The name is matched case‑insensitively against UnityEngine.HumanBodyBones.

Parameter
Type
Description

Teleport

void Teleport (string landmarkName) void Teleport ( position) void Teleport ( position, rotation) void Teleport (int region) void Teleport (int region, position, rotation)

Teleport the avatar.

Parameter
Type
Description

SetIKGoal

void SetIKGoal (string goal, bool positionGoal, float positionStrength, positionTarget, bool rotationGoal, float rotationStrength, rotationTarget)

Set the IK goal to avatar.

Parameter
Type
Description

ClearIKGoal

void ClearIKGoal (string goal)

Clear the IK Goal.

Parameter
Type
Description

PlayCustomAnimation

void PlayCustomAnimation ( animationClip)

Play a custom animation on the avatar.

Parameter
Type
Description

StopCustomAnimation

void StopCustomAnimation ()

Make the avatar stops playing custom animation.

OnAvatarReload

void OnAvatarReload (Closure o)

This event will be called when the avatar gets loaded.

Parameter
Type
Description

SynchroniseState

void SynchroniseState ()

Synchronise avatar's state to network.

StartFly

void StartFly ()

Puts the avatar into Fly Mode.

EndFly

void EndFly ()

Exits Avatar out of Fly Mode

OnAvatarSkeletonReload

void OnAvatarSkeletonReload (Closure o)

This event will be called when the avatar skeleton gets loaded.

Parameter
Type
Description

TeleportToNextEvent

double TeleportToNextEvent (long withinSeconds=600)

Teleports to the region of the next scheduled event if it starts within the given time window. Returns 0 if a teleport occurs; returns the number of seconds until the next event if it is outside the cutoff; returns -1 if there are no upcoming events.

Parameter
Type
Description

Properties

Username

string Username get

Returns the avatar's current username (note: this can be changed by players for a small fee)

DisplayName

string DisplayName get

Returns the avatar's display name (falls back to Username if unset).

Title

string Title get

Returns the avatar's current title

OrgTitle

string OrgTitle get

Returns the user's organizational job title (JobTitle).

OrgName

string OrgName get

Returns the user's organization/company name (Company).

ID

long ID get

Returns the avatar's user ID, please note if you store these, this is a 'long' value not a 'int'.

IsAttached

bool IsAttached get

Returns True if avatar is Attached

MovementSpeed

float MovementSpeed get set

How fast the avatar's movement is

JumpHeight

float JumpHeight get set

How high the avatar's jump is

Guest

bool Guest get

Is this Avatar a Guest?

OutfitID

long OutfitID get

Returns the current outfit ID of the avatar

Loaded

bool Loaded get

Returns true if avatar is Loaded

Gender

string Gender get

Returns the avatar's gender as a string (e.g., "Male", "Female").

LockObject

LockObject get

The object the Avatar is to. Returns Null if Avatar is not attached.

Skeleton

Skeleton get

Returns a reference to avatar's skeleton GameObject

BlockMovement

bool BlockMovement get set

If set to True, avatar's movement will be blocked

BlockRun

bool BlockRun get set

Is the Avatar blocked from running?

BlockFly

bool BlockFly get set

Is the Avatar blocked from flying?

BlockCrouch

bool BlockCrouch get set

Is the Avatar blocked from crouching?

BlockJump

bool BlockJump get set

Is the Avatar blocked from jumping?

IsGrounded

bool IsGrounded get

Returns True if avatar is Grounded

GameObject

GameObject get

The reference to the Avatar's GameObject

bone

string

Name of a UnityEngine.HumanBodyBones value (case‑insensitive), e.g., "LeftShoulder", "Head".

o

Closure (callback)

A function that will be called once the OnAvatarReload event is triggered.

o

Closure (callback)

A function that will be called once the OnAvatarSkeletonReload event is triggered.

withinSeconds

long

Maximum seconds ahead to consider for auto-teleport. Defaults to 600.

SGameObject
SVector
SVector
SQuaternion
SVector
SQuaternion
SVector
SQuaternion
SResource
SGameObject
Attached
SGameObject
SGameObject
Space.Scene.PlayerAvatar.AttachTo(targetObject)
--the below script makes the player Attach/Detach to/from this object by clicking it
--(Example: Seat/Vehicle/Experience etc.. )

thisGameObject = Space.Host.ExecutingObject
isAttached = 0


OnClick = function()

  if isAttached == 0 then
    Space.Scene.PlayerAvatar.AttachTo(thisGameObject)
    isAttached = 1
  elseif isAttached == 1 then
    Space.Scene.PlayerAvatar.Detach()
    isAttached = 0
  end

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to Attach/Detach yourself to/from me"
thisGameObject.Clickable.OnClick(OnClick)  
Space.Scene.PlayerAvatar.Detach()
 --the below script makes the player Attach/Detach to/from this object by clicking it
--(Example: Seat/Vehicle/Experience etc.. )

thisGameObject = Space.Host.ExecutingObject
isAttached = 0


OnClick = function()

  if isAttached == 0 then
    Space.Scene.PlayerAvatar.AttachTo(thisGameObject)
    isAttached = 1
  elseif isAttached == 1 then
    Space.Scene.PlayerAvatar.Detach()
    isAttached = 0
  end

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to Attach/Detach yourself to/from me"
thisGameObject.Clickable.OnClick(OnClick)   
function OAA()
--
end
Space.Scene.PlayerAvatar.OnAvatarAttached(OAA)
function OAD()
--
end
Space.Scene.PlayerAvatar.OnAvatarDetached(OAD)
local avatar=Space.Scene.PlayerAvatar
avatar.LoadOutfit(10001)
 --the below script changes the player's outfit into 
--a pre-defined outfit if they click the object containing the script
--(Example: Player clicks on a wardrobe and their outfit changes)
--[Only works on white-label deployment]

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
Space.Scene.PlayerAvatar.LoadOutfit(2662469)
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Put on your favourite suit"
thisGameObject.Clickable.OnClick(OnClick)
Space.Scene.PlayerAvatar.ResetOutfit()
--Clicking this object will reset player avatar's outfit
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OnClick = function()
thisPlayer.ResetOutfit() 
end


thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
local avatar=Space.Scene.PlayerAvatar
avatar.Register("MyName","MyPassword","MyEmail",false,function ()
    Space.Log("Success!")
end,function ()
    Space.Log("OnError!!")
end)
local avatar=Space.Scene.PlayerAvatar
avatar.ResetOutfitToTemplate(10001)
--Clicking this object will reset player avatar's outfit to a specific template.
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OnClick = function()
thisPlayer.ResetOutfitToTemplate(10001)
end


thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
-- Humanoid models only. Pass a UnityEngine.HumanBodyBones name.
local bone = Space.Scene.PlayerAvatar.FindBone("LeftShoulder")
Space.Log(bone.Name) -- Prints the bone name of the corresponding search parameter; on default avatars, prints "LeftShoulder"
--[[
UnityEngine.HumanBodyBones values

Body: Hips, Spine, Chest, UpperChest
Head: Neck, Jaw, Head, LeftEye, RightEye
Left Arm: LeftShoulder, LeftUpperArm, LeftLowerArm, LeftHand
Left Leg: LeftUpperLeg, LeftLowerLeg, LeftFoot, LeftToes
Right Arm: RightShoulder, RightUpperArm, RightLowerArm, RightHand
Right Leg: RightUpperLeg, RightLowerLeg, RightFoot, RightToes
Left Hand (Thumb): LeftThumbProximal, LeftThumbIntermediate, LeftThumbDistal
Left Hand (Index): LeftIndexProximal, LeftIndexIntermediate, LeftIndexDistal
Left Hand (Middle): LeftMiddleProximal, LeftMiddleIntermediate, LeftMiddleDistal
Left Hand (Ring): LeftRingProximal, LeftRingIntermediate, LeftRingDistal
Left Hand (Little): LeftLittleProximal, LeftLittleIntermediate, LeftLittleDistal
Right Hand (Thumb): RightThumbProximal, RightThumbIntermediate, RightThumbDistal
Right Hand (Index): RightIndexProximal, RightIndexIntermediate, RightIndexDistal
Right Hand (Middle): RightMiddleProximal, RightMiddleIntermediate, RightMiddleDistal
Right Hand (Ring): RightRingProximal, RightRingIntermediate, RightRingDistal
Right Hand (Little): RightLittleProximal, RightLittleIntermediate, RightLittleDistal
]]
 --this script will set your avatar's "right hand" as parent of this object
--this way this object will be a child of your right hand and therefore move with it
--(Example: clicking on a gun to equip it)


thisGameObject = Space.Host.ExecutingObject

OnClick = function()

RightHand = Space.Scene.PlayerAvatar.FindBone("RightHand")
thisGameObject.SetParent(RightHand)
thisGameObject.LocalPosition = Vector.New(0,0,0) -- resetting position to match hand

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Click to Equip "
thisGameObject.Clickable.OnClick(OnClick) 
Space.Scene.PlayerAvatar.Teleport("MyLandMark")
--or
Space.Scene.PlayerAvatar.Teleport( Vector.New(0,0,0) )
--or
Space.Scene.PlayerAvatar.Teleport( Vector.New(0,0,0), Quaternion.New(0,0,0) )
--or
Space.Scene.PlayerAvatar.Teleport( 5432342)
--or
Space.Scene.PlayerAvatar.Teleport( 5432342, Vector.New(0,0,0), Quaternion.New(0,0,0) )
--the below script teleports player to a specific landmark
--if they click the object containing it
--(Example: A region promotional/advertisement sign)
--[You need a landmark in the scene with name "Fashion Section Landmark"

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
Space.Scene.PlayerAvatar.Teleport("Fashion Section Landmark")
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me to go to the fashion section!"
thisGameObject.Clickable.OnClick(OnClick)
avatar=Space.Scene.PlayerAvatar
pos=avatar.FindBone("Chest").WorldPosition
avatar.SetIKGoal("Chest",false,0,pos,true,20,Quaternion.Euler(0,60,0))
avatar=Space.Scene.PlayerAvatar
pos=avatar.FindBone("Chest").WorldPosition
avatar.SetIKGoal("Chest",false,0,pos,true,20,Quaternion.Euler(0,60,0))
Space.Host.InvokeDelayed(function ()
    avatar.ClearIKGoal("Chest")
end,5)
-- will clear after 5 seconds.
Space.Scene.PlayerAvatar.PlayCustomAnimation(Space.Resources[1])
 --the below script makes the player Play/Stop a custom animation when clicking this object
--(Example: Dance Machine )
--[Required: Place an animation in the first "Resource" in the scripting runtime]

thisGameObject = Space.Host.ExecutingObject
isDancing = 0


OnClick = function()

  if isDancing == 0 then
    Space.Scene.PlayerAvatar.PlayCustomAnimation(Space.Resources[1])
    isDancing = 1
  elseif isDancing == 1 then
    Space.Scene.PlayerAvatar.StopCustomAnimation()
    isDancing = 0
  end

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to Start/Stop dancing"
thisGameObject.Clickable.OnClick(OnClick)   
avatar=Space.Scene.PlayerAvatar
avatar.PlayCustomAnimation(Space.Resources[1])
avatar.StopCustomAnimation()
 --the below script makes the player Play/Stop a custom animation when clicking this object
--(Example: Dance Machine )
--[Required: Place an animation in the first "Resource" in the scripting runtime]

thisGameObject = Space.Host.ExecutingObject
isDancing = 0


OnClick = function()

  if isDancing == 0 then
    Space.Scene.PlayerAvatar.PlayCustomAnimation(Space.Resources[1])
    isDancing = 1
  elseif isDancing == 1 then
    Space.Scene.PlayerAvatar.StopCustomAnimation()
    isDancing = 0
  end

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click to Start/Stop dancing"
thisGameObject.Clickable.OnClick(OnClick)   
local avatar=Space.Scene.PlayerAvatar
avatar.OnAvatarReload(function ()
    Space.Log(avatar.OutfitID)
end)
--this script ensures the avatar is still animating after their avatar gets reloaded
thisPlayer = Space.Scene.PlayerAvatar
theAnimation = Space.GetResource("The Animation") --add animation to resources in Scripting Runtime
wasAnimated = true --you'll need to set this according to the situation, its true now for example's sake


ResetDance = function()
 if wasAnimated then
  thisPlayer.PlayCustomAnimation(theAnimation)
 end

end
thisPlayer.OnAvatarReload(ResetDance)
Space.Scene.PlayerAvatar.SynchroniseState()
Space.Scene.PlayerAvatar.StartFly()
--the below script teleports the player to a sky location after he clicks
--but then immediately puts the character in fly mode so they don't fall back down
--(Example: Sky exhibit)

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
Space.Scene.PlayerAvatar.Teleport(Vector.New(0,10,0))
Space.Scene.PlayerAvatar.StartFly()
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me to view our sky exhibit!"
thisGameObject.Clickable.OnClick(OnClick) 
Space.Scene.PlayerAvatar.EndFly()
--the below script teleports a player flying in the sky back to the ground
--and then ends fly mode by switching to Idle so they remain standing
--(Example: Going back down to ground from Sky exhibit)

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
Space.Scene.PlayerAvatar.Teleport(Vector.New(0,0,0))
Space.Scene.PlayerAvatar.EndFly()
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Click me to go back to the ground!"
thisGameObject.Clickable.OnClick(OnClick) 
avatar=Space.Scene.PlayerAvatar
Space.Log(avatar.BlockJump)
avatar.OnAvatarSkeletonReload(function ()
    Space.Log(avatar.OutfitID)
end)
--this script ensures the avatar is still animating after their avatar's skeleton gets reloaded
thisPlayer = Space.Scene.PlayerAvatar
theAnimation = Space.GetResource("The Animation") --add animation to resources in Scripting Runtime
wasAnimated = true --you'll need to set this according to the situation, its true now for example's sake


ResetDance = function()
 if wasAnimated then
  thisPlayer.PlayCustomAnimation(theAnimation)
 end

end
thisPlayer.OnAvatarSkeletonReload(ResetDance)
timeUntilNextEvent = Space.Scene.PlayerAvatar.TeleportToNextEvent()
--or
timeUntilNextEvent = Space.Scene.PlayerAvatar.TeleportToNextEvent(500)
playerUsername = Space.Scene.PlayerAvatar.Username
 --this script, once clicked, will get all avatars in the scene
--and print their Username(including self)
--(Example: scoreboards/radars/scanners/game machines)

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
allAvatars = Space.Scene.AllAvatars

        for var=1, #allAvatars do
    local Username = allAvatars[var].Username
     Space.Log("Username: " .. Username)
        end

end

 
thisGameObject.AddClickable() 
thisGameObject.Clickable.Tooltip = "Click to print all avatars' Username"
thisGameObject.Clickable.OnClick(OnClick) 
playerDisplayName =  Space.Scene.PlayerAvatar.DisplayName
playerTitle = Space.Scene.PlayerAvatar.Title
 --this script, once clicked, will get all avatars in the scene
--and print their Title and Username(including self)

thisGameObject = Space.Host.ExecutingObject

OnClick = function()
allAvatars = Space.Scene.AllAvatars

        for var=1, #allAvatars do
    local Username = allAvatars[var].Username
    local Title = allAvatars[var].Title
     Space.Log(Title .. " " .. Username)
        end

end

 
thisGameObject.AddClickable() 
thisGameObject.Clickable.Tooltip = "Click to print all avatars' Titles and Username"
thisGameObject.Clickable.OnClick(OnClick)
playerJobTitle = Space.Scene.PlayerAvatar.OrgTitle
playerCompanyName = Space.Scene.PlayerAvatar.OrgName
playerID = Space.Scene.PlayerAvatar.ID
--this script, once clicked, will get all avatars in the scene
--and print their ID(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
     Space.Log("ID: " .. ID)
        end

end

 
thisGameObject.AddClickable() 
thisGameObject.Clickable.Tooltip = "Click to print all avatars' ID"
thisGameObject.Clickable.OnClick(OnClick) 
isAttached = Space.Scene.PlayerAvatar.IsAttached
Space.Scene.PlayerAvatar.MovementSpeed = 20
 --the below script makes the object give the player triple movement speed
--once it's clicked, and then returns them to original speed after 10 seconds
--(Example: Triple Speed Powerup (avatar running race))

thisGameObject = Space.Host.ExecutingObject

TripleSpeedCoroutine = function()
local originalSpeed = Space.Scene.PlayerAvatar.MovementSpeed
Space.Scene.PlayerAvatar.MovementSpeed = originalSpeed * 3
coroutine.yield(10)
Space.Scene.PlayerAvatar.MovementSpeed = originalSpeed
  
end


OnClick = function()
Space.Host.StartCoroutine(TripleSpeedCoroutine)
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Triple Speed Powerup!"
thisGameObject.Clickable.OnClick(OnClick)  
Space.Scene.PlayerAvatar.JumpHeight = 20
 --the below script makes the object give the player triple jump height
--once it's clicked, and then returns them to original jump height after 10 seconds
--(Example: Triple Jump Height Powerup )

thisGameObject = Space.Host.ExecutingObject
originalJumpHeight = Space.Scene.PlayerAvatar.JumpHeight

TripleJumpHeightCoroutine = function()
Space.Scene.PlayerAvatar.JumpHeight = originalJumpHeight * 3
coroutine.yield(10)
Space.Scene.PlayerAvatar.JumpHeight = originalJumpHeight
end


OnClick = function()
Space.Host.StartCoroutine(TripleJumpHeightCoroutine)
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip = "Triple JumpHeight Powerup!"
thisGameObject.Clickable.OnClick(OnClick)  
isGuest = Space.Scene.PlayerAvatar.Guest
--this script will make this object non-clickable for guest players

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OnClick = function()
Space.Log("Do Something")
end

if not thisPlayer.Guest then --if player is not guest
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
end
avOutfit = Space.Scene.PlayerAvatar.OutfitID
isLoaded = Space.Scene.PlayerAvatar.Loaded
--this script will wait for a joining avatar to load first before making it play an animation
--(otherwise that animation may be reset if played before load is complete)

NewJoinAnimation = Space.GetResource("The Animation")

OnPlayerJoin = function(NewAvatar)
  
     Space.Host.StartCoroutine(function()
      
      while not NewAvatar.Loaded do coroutine.yield(0) end --makes it wait
 Space.Log("yes")     
      NewAvatar.PlayCustomAnimation(NewJoinAnimation) --at this point Loaded is True
      end)
      

end


Space.Scene.OnPlayerJoin(OnPlayerJoin)
playerGender = Space.Scene.PlayerAvatar.Gender
lockObject = Space.Scene.PlayerAvatar.LockObject
avSkeleton = Space.Scene.PlayerAvatar.Skeleton
--clicking this object will replace your avatar's animator controller (found on the skeleton)
thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

customController = Space.GetResource("animcont")


OnClick = function()
 thisPlayer.Skeleton.Animator.Controller = customController
end

thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Space.Scene.PlayerAvatar.BlockMovement = true
 --the below script makes this object a boundary area where any user entering it
--will be blocked from movement for 20 seconds, then the object will release controls and
--destroy itself after that
--(Example: freezing trap)
--[This object's collider needs to be set as IsTrigger (Please read about OnTriggerStart for troubleshooting)]

thisGameObject = Space.Host.ExecutingObject
FrozenTime = 0.0

OnTriggerStart = function(TriggerStarter)
  if TriggerStarter.Root.Avatar ~= nil then
    if TriggerStarter.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
      Space.Scene.PlayerAvatar.BlockMovement = true
    end
  end
end

OnTriggerStay = function(TriggerStayer)
  if TriggerStayer.Root.Avatar ~= nil then
    if TriggerStayer.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
      FrozenTime = FrozenTime + Space.DeltaTime
        if FrozenTime > 20 then
        Space.Scene.PlayerAvatar.BlockMovement = false
        thisGameObject.Destroy()
        end
    end
  end
end

thisGameObject.SubscribeToEvents()
thisGameObject.OnTriggerStart(OnTriggerStart)
thisGameObject.OnTriggerStay(OnTriggerStay)
Space.Scene.PlayerAvatar.BlockRun = true
--this script will block a player's run ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OTS = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then 
    thisPlayer.BlockRun = true
  end
end

OTE = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
   thisPlayer.BlockRun = false
  end 
end

thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
Space.Scene.PlayerAvatar.BlockFly = true
--this script will block a player's fly ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OTS = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then 
    thisPlayer.BlockFly = true
  end
end

OTE = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
   thisPlayer.BlockFly = false
  end 
end

thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
Space.Scene.PlayerAvatar.BlockCrouch = true
--this script will block a player's crouch ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OTS = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then 
    thisPlayer.BlockCrouch = true
  end
end

OTE = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
   thisPlayer.BlockCrouch = false
  end 
end

thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
Space.Scene.PlayerAvatar.BlockJump = true
--this script will block a player's jump ability when entering trigger collider and release it when leaving
--[Requires this object to have a "Trigger" collider]

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar

OTS = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then 
    thisPlayer.BlockJump= true
  end
end

OTE = function(gameObject)
  if gameObject.Avatar ~= nil and thisPlayer == gameObject.Avatar then
   thisPlayer.BlockJump= false
  end 
end

thisObject.OnTriggerStart(OTS)
thisObject.OnTriggerExit(OTE)
isGrounded = Space.Scene.PlayerAvatar.IsGrounded
playerObject = Space.Scene.PlayerAvatar.GameObject
--Clicking this object will teleport you 2 units forward and make you face the opposite way

thisObject = Space.Host.ExecutingObject
thisPlayer = Space.Scene.PlayerAvatar


OnClick = function()
local targetPos = thisPlayer.GameObject.WorldPosition + (thisPlayer.GameObject.Forward * 2) 
local targetRot = thisPlayer.GameObject.WorldRotation  *  Quaternion.AngleAxis(Vector.Up, 180)
thisPlayer.Teleport(targetPos, targetRot)
  
  
end

thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)