SSeat
Index
Functions Index
void SitPlayer ()
void UnseatPlayer ()
void OnStandUp (Closure e)
void OnSit (Closure e)
void OnPlayerStandUp (Closure e)
void OnPlayerSit (Closure e)
Properties Index
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.
Space.Host.ExecutingObject.Seat.SitPlayer()
UnseatPlayer
void UnseatPlayer ()
Make a player unseat.
Space.Host.ExecutingObject.Seat.UnseatPlayer()
OnStandUp
void OnStandUp (Closure e)
Binds a function to the Seat's On Stand Up event
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
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
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
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