Skip to main content

SSeat

Index

Functions Index

Function Name
void SitPlayer ()
void UnseatPlayer ()
void OnStandUp (Closure e)
void OnSit (Closure e)
void OnPlayerStandUp (Closure e)
void OnPlayerSit (Closure e)

Properties Index

Property Name
bool Enabled get set
bool InUse get
long PlayerSeated get
bool UseSlotID get set
string SlotID get set
SCollider ClickableCollider get set
SResource Animation get set
SResource AnimationMale get set
SResource AnimationFemale get set
SGameObject GameObject get

Functions

SitPlayer

void SitPlayer ()

Make a player sit.

ParameterTypeDescription
Space.Host.ExecutingObject.Seat.SitPlayer()

UnseatPlayer

void UnseatPlayer ()

Make a player unseat.

ParameterTypeDescription
Space.Host.ExecutingObject.Seat.UnseatPlayer()

OnStandUp

void OnStandUp (Closure e)

Binds a function to the Seat's On Stand Up event

ParameterTypeDescription
e = function()
Space.Log("On Stand Up event")
end

Space.Host.ExecutingObject.Seat.OnStandUp(e)

OnSit

void OnSit (Closure e)

Binds a function to the Seat's On Sit event

ParameterTypeDescription
e = function()
Space.Log("On Sit event")
end

Space.Host.ExecutingObject.Seat.OnSit(e)

OnPlayerStandUp

void OnPlayerStandUp (Closure e)

Binds a function to the Seat's On Player Stand Up event which is fired only on the Player's client

ParameterTypeDescription
e = function()
Space.Log("On Player Stand Up")
end

Space.Host.ExecutingObject.Seat.OnPlayerStandUp(e)
--the below script will teleport the player above the seat after standing up
--so that they do not go back to original position, but rather be standing next to the seat
--(Example: if the seat moves - such as in a vehicle- and we want to stand up next to it)
--[Requires Seat Component in the GameObject running this script]

thisGameObject = Space.Host.ExecutingObject

OnPlayerStandUp = function()
seatPosition = thisGameObject.WorldPosition
teleportPosition = Vector.New(seatPosition.X, seatPosition.Y + 1, seatPosition.Z)
Space.Scene.PlayerAvatar.Teleport(teleportPosition)
end

thisGameObject.Seat.OnPlayerStandUp(OnPlayerStandUp)

OnPlayerSit

void OnPlayerSit (Closure e)

Binds a function to the Seat's On Player Sit event which is fired only on the Player's client

ParameterTypeDescription
e = function()
Space.Log("On Player Sit event")
end

Space.Host.ExecutingObject.Seat.OnPlayerSit(e)
--the below script will check if the player sitting is the owner of the seat
--if they are not, we will remove them from the seat
--(Example: if the seat is a vehicle which the owner wants no one else to use)
--[Requires Seat Component in the GameObject running this script]
--<Note: ID match may not succeed in Editor but will succeed in SS client>

thisGameObject = Space.Host.ExecutingObject

OnPlayerSit = function()
if Space.Scene.PlayerAvatar.ID ~= thisGameObject.Owner then
thisGameObject.Seat.UnseatPlayer()
Space.Log("You do not have permission to sit in this vehicle")
end

end

thisGameObject.Seat.OnPlayerSit(OnPlayerSit)

Properties

Enabled

bool Enabled get set

Whether the seat component is enabled.

= seatIsEnabled = Space.Host.ExecutingObject.Seat.Enabled
--clicking this object will Enable/Disable it's Seat component
thisGameObject = Space.Host.ExecutingObject
component = thisGameObject.Seat

OnClick = function()
component.Enabled = not component.Enabled
end


thisGameObject.AddClickable()
thisGameObject.Clickable.OnClick(OnClick)

InUse

bool InUse get

Return that whether the seat is in use.

seatIsInUse = Space.Host.ExecutingObject.Seat.InUse
--this script will play a looping sound only if someone is using the seat
--and will stop the sound if someone is not
--(Example: carnival game )
--[Object must contain a Seat component and AudioSource component]

thisGameObject = Space.Host.ExecutingObject


OnUpdate = function()
if thisGameObject.Seat.InUse then
if not thisGameObject.Audio.IsPlaying then
thisGameObject.Audio.Play()
end
else
if thisGameObject.Audio.IsPlaying then
thisGameObject.Audio.Stop()
end
end
end

thisGameObject.Audio.Loop = true
thisGameObject.SubscribeToEvents()
thisGameObject.OnUpdate(OnUpdate)

PlayerSeated

long PlayerSeated get

Return the ID of the seating player.

player = Space.Host.ExecutingObject.Seat.PlayerSeated

UseSlotID

bool UseSlotID get set

Return true if uses SlotID

Space.Host.ExecutingObject.Seat.UseSlotID = false

SlotID

string SlotID get set

Return the slot ID of the seat.

seatSlotID = Space.Host.ExecutingObject.Seat.SlotID

ClickableCollider

SCollider ClickableCollider get set

Return the clickable collider.

seatClickableCollider = Space.Host.ExecutingObject.Seat.ClickableCollider

Animation

SResource Animation get set

Return the animation clip.

Space.Host.ExecutingObject.Seat.Animation = Space.GetResource("ResourceName")
--the below script will toggle between two seat animations every 30 seconds
--(Example: a couch where the player sitting periodically changes pose)
--[Requires Seat Component in the GameObject running this script]
--[Requires adding 2 animations as "Resources" at the bottom of the Scripting Runtime Component]

thisGameObject = Space.Host.ExecutingObject

anim1 = Space.GetResource("anim1")
anim2 = Space.GetResource("anim2")

thisGameObject.Seat.Animation = anim1
animIndex = 1


AnimationAlternate = function()
while true do
Space.Log(thisGameObject.Seat.Animation)
if animIndex == 1 then
thisGameObject.Seat.Animation = anim2
animIndex = 2
else
thisGameObject.Seat.Animation = anim1
animIndex = 1
end


-- next part unseats then seats the player to reflect animation change (its too fast to notice)
-- we also make sure we are running this part on the specific player sitting (if any), not everyone else
if thisGameObject.Seat.InUse then
if thisGameObject.Seat.PlayerSeated == Space.Scene.PlayerAvatar.ID then
thisGameObject.Seat.UnseatPlayer()
thisGameObject.Seat.SitPlayer()
end
end


Space.Log("yielding")
coroutine.yield(5)

end



end

Space.Host.StartCoroutine(AnimationAlternate)

AnimationMale

SResource AnimationMale get set

No Description

Space.Host.ExecutingObject.Seat.AnimationMale = Space.GetResource("ResourceName")

AnimationFemale

SResource AnimationFemale get set

No Description

Space.Host.ExecutingObject.Seat.AnimationFemale = Space.GetResource("ResourceName")

GameObject

SGameObject GameObject get

Property Description

theGameObject = Space.Host.ExecutingObject.Seat.GameObject