wiki.sine.space | sinespace

Scripting/SGameObject

From wiki.sine.space
Revision as of 11:49, 25 November 2021 by Voidtech (Talk | contribs)

Jump to: navigation, search

The SGameObject class refers a single Game Object active within the scene.

Contents

Public Member Functions

Duplicate

SGameObject Duplicate ();

Copies the object and returns a reference to the copy. Equivalent to calling Instantiate() in Unity

local copy = Space.Host.ExecutingObject.Duplicate()


 
--this script will make this object, once clicked, duplicate itself, then the duplicate
--moves up and then duplicate itself again and the duplicate move down (total 3 vertically aligned)
--(Example: cells multiplying)


thisGameObject = Space.Host.ExecutingObject


OnClick = function()

local firstDuplicate = thisGameObject.Duplicate()
firstDuplicate.WorldPosition = firstDuplicate.WorldPosition + firstDuplicate.Up
local secondDuplicate = thisGameObject.Duplicate()
secondDuplicate.WorldPosition = secondDuplicate.WorldPosition - secondDuplicate.Up

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Click to watch me multiply "
thisGameObject.Clickable.OnClick(OnClick)
 


Destroy

void Destroy ();

Schedules this object for deletion at the end of the frame

Space.Host.ExecutingObject.Destroy()


 
--this script will make this object destroy itself if it collides with something
--(Example: grenade or bullet)
--[Make sure you add a rigibody to this object (read above about "collisions")


thisGameObject = Space.Host.ExecutingObject


OnCollisionEnter = function(SPhysicsHit)
 thisGameObject.Destroy()
end

thisGameObject.OnCollisionEnter(OnCollisionEnter) 


AddLight

SLight AddLight ()

Adds a Light component to the object.

local obj = Space.Host.ExecutingObject;

-- add the Light component to the object if there is none
if obj.Light == null then

obj.AddLight();

end

Space.Log(obj.Light);

-- prints "SLight" to the console. Now we can work with the Light component on this object.



AddAudioSource

SAudioSource AddAudioSource ()

Adds an AudioSource component to the object.

local obj = Space.Host.ExecutingObject;

-- add the AudioSource component to the object if there is none
if obj.Audio == null then

obj.AddAudioSource();

end

Space.Log(obj.Audio);

-- prints "SAudioSource" to the console. Now we can work with the AudioSource component on this object.



AddClickable

SClickable AddClickable ()

Adds a Clickable component to the object.

local obj = Space.Host.ExecutingObject;

-- add the Clickable component to the object if there is none
if obj.Clickable == null then

obj.AddClickable();

end

Space.Log(obj.Clickable);

-- prints "SClickable" to the console. Now we can work with the Clickable component on this object.



AddRigidbody

SRigidbody AddRigidbody ()

Adds a Rigidbody component to the object.

local obj = Space.Host.ExecutingObject;

-- add the Rigidbody component to the object if there is none
if obj.Rigidbody == null then

obj.AddRigidbody();

end

Space.Log(obj.Rigidbody);

-- prints "SRigidbody" to the console. Now we can work with the Rigidbody component on this object.



AddNavMeshAgent

SNavMeshAgent AddNavMeshAgent ()

Adds a NavMeshAgent component to the object.

local obj = Space.Host.ExecutingObject;

-- add the NavMeshAgent component to the object if there is none
if obj.NavMeshAgent == null then

obj.AddNavMeshAgent();

end

Space.Log(obj.NavMeshAgent);

-- prints "SNavMeshAgent" to the console. Now we can work with the NavMeshAgent component on this object.



AddSeat

SSeat AddSeat ()

Adds a Seat component to the object.

local obj = Space.Host.ExecutingObject;

-- add the Seat component to the object if there is none
if obj.Seat == null then

obj.AddSeat();

end

Space.Log(obj.Seat);

-- prints "SSeat" to the console. Now we can work with the Seat component on this object.




SubscribeToEvents

void SubscribeToEvents ();

Causes this script to start listening to events on the object. (This function is now automatically called by events that require it)

Space.Host.ExecutingObject.SubscribeToEvents()


OnAwake

void OnAwake (Action callback)

Binds a event to the Awake() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnAwake(F)


OnStart

void OnStart (Action callback)

Binds a event to the Start() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnStart(F)


OnEnable

void OnEnable (Action callback)

Binds a event to the OnEnable() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnEnable(F)


OnDisable

void OnDisable (Action callback)

Binds a event to the OnDisable() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnDisable(F)


OnFixedUpdate

void OnFixedUpdate (Action callback)

Binds a event to the OnFixedUpdate() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnFixedUpdate(F)


--this script will make this object move forward each physics frame
thisObject = Space.Host.ExecutingObject

OnFixedUpdate = function()
  
  thisObject.WorldPosition = thisObject.WorldPosition + (thisObject.Forward * 0.01 )
--unlike OnUpdate we did not multiply by Space.DeltaTime 
--because OnFixedUpdate executes at the same rate regardless
end


thisObject.OnFixedUpdate(OnUpdate)


</pre>

OnLateUpdate

void OnLateUpdate (Action callback)

Binds a event to the OnLateUpdate() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnLateUpdate(F)


OnUpdate

void OnUpdate (Action callback)

Binds a event to the OnUpdate() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnUpdate(F)


--this script will make this object move forward each frame
thisObject = Space.Host.ExecutingObject

OnUpdate = function()
  
  thisObject.WorldPosition = thisObject.WorldPosition + (thisObject.Forward * 0.01 * Space.DeltaTime)
--we multipy by Space.DeltaTime so that it behaves the same for all players
--even though they have different FPS (frames per second)
end


thisObject.OnUpdate(OnUpdate)

OnMouseDown

void OnMouseDown (Action callback)

Binds a event to the OnMouseDown() event.

function F()
Space.Log("bound")
end
Space.Host.ExecutingObject.OnMouseDown(F)


 --this script will make this object destroy if you click on it 
--(Example: deleting objects )

thisGameObject = Space.Host.ExecutingObject


OnMouseDown = function()
  thisGameObject.Destroy()
end

thisGameObject.OnMouseDown(OnMouseDown) 


SetSiblingIndex

void SetSiblingIndex (int newindex)

Sets the sibling index.

Use this to change the sibling index of the GameObject. If a GameObject shares a parent with other GameObjects and are on the same level (i.e. they share the same direct parent), these GameObjects are known as siblings. The sibling index shows where each GameObject sits in this sibling hierarchy.

Use SetSiblingIndex to change the GameObject’s place in this hierarchy. When the sibling index of a GameObject is changed, its order in the Hierarchy window will also change.

Space.Host.ExecutingObject.SetSiblingIndex(2)



SetAsFirstSibling

void SetAsFirstSibling ()

This GameObject becomes the first Sibling

Space.Host.ExecutingObject.SetAsFirstSibling()



SetAsLastSibling

void SetAsLastSibling ()

This GameObject becomes the last Sibling

Space.Host.ExecutingObject.SetAsLastSibling()



Instantiate

SGameObject Instantiate ()

Copy of Duplicate() for convenience

NewGameObject = Space.Host.ExecutingObject.Instantiate()


--this script will make this object, once clicked, duplicate itself, then the duplicate
--moves up and then duplicate itself again and the duplicate move down (total 3 vertically aligned)
--(Example: cells multiplying)


thisGameObject = Space.Host.ExecutingObject


OnClick = function()

local firstDuplicate = thisGameObject.Instantiate()
firstDuplicate.WorldPosition = firstDuplicate.WorldPosition + firstDuplicate.Up
local secondDuplicate = thisGameObject.Instantiate()
secondDuplicate.WorldPosition = secondDuplicate.WorldPosition - secondDuplicate.Up

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Click to watch me multiply "
thisGameObject.Clickable.OnClick(OnClick) 


AddHingeJoint

SHingeJoint AddHingeJoint ()

Adds a Hinge Joint component to this Game Object and returns its reference

NewHingeJoint = Space.Host.ExecutingObject.AddHingeJoint()


AddAnimator

SAnimator AddAnimator ()

Adds an Animator component to this Game Object and returns its reference

NewAnimator = Space.Host.ExecutingObject.AddAnimator()



GetScript

SScriptingRuntime GetScript (string name)

Returns a Scripting Runtime component attached to this object by Component Name, or nil if none exist

scriptingRuntime = Space.Host.ExecutingObject.GetScript("scriptingruntimecomponentname")



GetScriptsInChildren

[[Scripting/List< SScriptingRuntime >|List< SScriptingRuntime >]] GetScriptsInChildren (string name, bool includeInactive)

Returns Scripting Runtime components attached to this object by Component Name or its children

tableScriptsInChildren = Space.Host.ExecutingObject.GetScriptsInChildren("scriptingruntimecomponentname",true)



GetScriptInChildren

SScriptingRuntime GetScriptInChildren (string name, bool includeInactive)

Returns a Scripting Runtime component attached to this object or its children by Component Name, or nil if none exist

scriptingRuntimeInChildren = Space.Host.ExecutingObject.GetScriptInChildren("scriptingruntimecomponentname",true)



GetScriptInParent

SScriptingRuntime GetScriptInParent (string name)

Returns a Scripting Runtime component attached to this object or its parents by Component Name, or nil if none exist

scriptingRuntimeInParent = Space.Host.ExecutingObject.GetScript("scriptingruntimecomponentname")



GetData

SScriptingData GetData (string name)

Returns a Scripting Data component attached to this object by Component Name, or nil if none exist

scriptingData = Space.Host.ExecutingObject.GetData("scriptingdatacomponentname")



GetAllDataInChildren

[[Scripting/List< SScriptingData >|List< SScriptingData >]] GetAllDataInChildren (string name, bool includeInactive)

Returns Scripting Data components attached to this object by Component Name or its children

tableScriptingDataInChildren = Space.Host.ExecutingObject.GetAllDataInChildren("scriptingdatacomponentname",true)



GetDataInChildren

SScriptingData GetDataInChildren (string name, bool includeInactive)

Returns a Scripting Data component attached to this object or its children by Component Name, or nil if none exist

scriptingDataInChildren = Space.Host.ExecutingObject.GetDataInChildren("scriptingdatacomponentname",true)



GetDataInParent

SScriptingData GetDataInParent (string name)

Returns a Scripting Data component attached to this object or its parents by Component Name, or nil if none exist

scriptingDataInParent = Space.Host.ExecutingObject.GetDataInParent("scriptingdatacomponentname")



OnTriggerStart

void OnTriggerStart (Action< SGameObject > e)

When a GameObject collides with another GameObject, Unity calls OnTriggerEnter.

OnTriggerEnter happens on the FixedUpdate function when two GameObjects collide. The Colliders involved are not always at the point of initial contact.

Note: Both GameObjects must contain a Collider component. One must have Collider.isTrigger enabled, and contain a Rigidbody. If both GameObjects have Collider.isTrigger enabled, no collision happens. The same applies when both GameObjects do not have a Rigidbody component.

this = Space.Host.ExecutingObject

OnTriggerStart  = function(SGameObject)
 Space.Log("Trigger Start")
end

this.OnTriggerStart (OnTriggerStart )


 --the below scipt makes this object a boundary area where flying gets blocked
--while player is in it and flying is allowed once player leaves it
--(Example: No fly zone)
--[This object's collider needs to be set as IsTrigger (Please read about OnTriggerStart for troubleshooting)]

thisGameObject = Space.Host.ExecutingObject

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


OnTriggerExit = function(TriggerExiter)
  if TriggerExiter.Root.Avatar ~= nil then
    if TriggerExiter.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
      Space.Scene.PlayerAvatar.BlockFly = false
    end
  end
end

thisGameObject.OnTriggerStart(OnTriggerStart)
thisGameObject.OnTriggerExit(OnTriggerExit) 


OnTriggerStay

void OnTriggerStay (Action< SGameObject > e)

OnTriggerStay is called almost all the frames for every Collider other that is touching the trigger. The function is on the physics timer so it won't necessarily run every frame.

This message is sent to the trigger and the collider that touches the trigger. Note that trigger events are only sent if one of the colliders also has a rigidbody attached. Trigger events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions.

this = Space.Host.ExecutingObject

OnTriggerStay  = function(SGameObject)
 Space.Log("Trigger Stay")
end

this.OnTriggerStay(OnTriggerStay)


--the below scipt makes this object a boundary area where any user entering it
--will be blocked from movement for 10 seconds, then the object will release controls and
--destry 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.OnTriggerStart(OnTriggerStart)
thisGameObject.OnTriggerStay(OnTriggerStay)


OnTriggerExit

void OnTriggerExit (Action< SGameObject > e)

OnTriggerExit is called when the Collider other has stopped touching the trigger.

This message is sent to the trigger and the Collider that touches the trigger. Notes: Trigger events are only sent if one of the Colliders also has a Rigidbody attached. Trigger events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions. OnTriggerExit occurs on the FixedUpdate after the Colliders have stopped touching. The Colliders involved are not guaranteed to be at the point of initial separation.

this = Space.Host.ExecutingObject

OnTriggerExit  = function(SGameObject)
 Space.Log("Trigger Stay")
end

this.OnTriggerExit(OnTriggerExit)


--the below scipt makes this object a boundary area where flying gets blocked
--while player is in it and flying is allowed once player leaves it
--(Example: No fly zone)
--[This object's collider needs to be set as IsTrigger (Please read about OnTriggerStart for troubleshooting)]

thisGameObject = Space.Host.ExecutingObject

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


OnTriggerExit = function(TriggerExiter)
  if TriggerExiter.Root.Avatar ~= nil then
    if TriggerExiter.Root.Avatar.Username == Space.Scene.PlayerAvatar.Username then
      Space.Scene.PlayerAvatar.BlockFly = false
    end
  end
end

thisGameObject.OnTriggerStart(OnTriggerStart)
thisGameObject.OnTriggerExit(OnTriggerExit)


OnCollisionEnter

void OnCollisionEnter (Action< SPhysicsHit > e)

OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.

In contrast to OnTriggerEnter, OnCollisionEnter is passed the SPhysicsHit class and not a Collider (GameObject). The SPhysicsHit class contains information, for example, about contact points and impact velocity. Notes: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached. Collision events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions.

this = Space.Host.ExecutingObject

OnCollisionEnter = function(SPhysicsHit)
 Space.Log("Collision Enter")
end

this.OnCollisionEnter(OnCollisionEnter)


 --this script will make this object delete itself if it collides with something
--(Example: grenade)
--[Make sure you add a rigibody to this object (read above about "collisions")


thisGameObject = Space.Host.ExecutingObject


OnCollisionEnter = function(SPhysicsHit)
 thisGameObject.Destroy()
end

thisGameObject.OnCollisionEnter(OnCollisionEnter) 


OnCollisionStay

void OnCollisionStay (Action< SPhysicsHit > e)

OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.

In contrast to OnTriggerStay, OnCollisionStay is passed the SPhysicsHit class and not a Collider (GameObject). The SPhysicsHit class contains information about contact points, impact velocity etc. If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations. Notes: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached. Collision events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions. Collision stay events are not sent for sleeping Rigidbodies.

this = Space.Host.ExecutingObject

OnCollisionStay = function(SPhysicsHit)
 Space.Log("Collision Stay")
end

this.OnCollisionStay(OnCollisionStay)


  --this script will make this object delete itself if
 --it is being touched for around 10 seconds
--(Example: a flag being captured)
--[Make sure this object has collider/rigidbody (read above about "collisions" for troubleshooting)]


thisGameObject = Space.Host.ExecutingObject
touchedTime = 0.0

OnCollisionStay = function(SPhysicsHit)
  touchedTime = touchedTime + Space.DeltaTime
    if touchedTime > 25 then
   thisGameObject.Destroy()
   end
end

thisGameObject.OnCollisionStay(OnCollisionStay)  


OnCollisionExit

void OnCollisionExit (Action< SPhysicsHit > e)

OnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.

In contrast to OnTriggerExit, OnCollisionExit is passed the SPhysicsHit class and not a Collider. The SPhysicsHit class contains information about contact points, impact velocity etc. If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations. Notes: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached. Collision events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions.

this = Space.Host.ExecutingObject

OnCollisionExit = function(SPhysicsHit)
 Space.Log("Collision Exit")
end

this.OnCollisionExit(OnCollisionExit)


 
--this script will make this object destroy itself when an object 
--that collided with it exits the collission
--(Example: landmine)
--[Make sure you add a rigibody to this object (read above about "collisions")


thisGameObject = Space.Host.ExecutingObject


OnCollisionExit = function(SPhysicsHit)
 thisGameObject.Destroy()
end

thisGameObject.OnCollisionExit(OnCollisionExit)

 


OnParticleCollision

void OnParticleCollision (Action< SGameObject > e)

OnParticleCollision is called when a particle hits a Collider.

This can be used to apply damage to a GameObject when hit by particles.

This message is sent to scripts attached to Particle Systems and to the Collider that was hit.

When OnParticleCollision is invoked from a script attached to a GameObject with a Collider, the GameObject parameter represents the ParticleSystem. The Collider receives at most one message per Particle System that collided with it in any given frame even when the Particle System struck the Collider with multiple particles in the current frame.

When OnParticleCollision is invoked from a script attached to a ParticleSystem, the GameObject parameter represents a GameObject with an attached Collider struck by the ParticleSystem. The ParticleSystem receives at most one message per Collider that is struck.

Messages are only sent if you enable Send Collision Messages in the Inspector of the Particle System Collision module.

The OnParticleCollision can be a co-routine. Simply use the yield statement in the function.

this = Space.Host.ExecutingObject

OnParticleCollision = function(GameObject)
 Space.Log("Particle Collision")
end

this.OnParticleCollision(OnParticleCollision)



OnParticleTrigger

void OnParticleTrigger (Action< SGameObject > e)

Binds a new event handler for the OnParticleTrigger event.

OnParticleTrigger event is called when any particles in a Particle System meet the conditions in the trigger module.

This can be used to kill or modify particles that are inside or outside a collision volume.

this = Space.Host.ExecutingObject

OnParticleTrigger = function(GameObject)
 Space.Log("Particle Trigger Event")
end

this.OnParticleTrigger(OnParticleTrigger)




OnApplicationQuit

void OnApplicationQuit (Action e)

Binds a new event handler for the On Application Quit event

this = Space.Host.ExecutingObject

OnApplicationQuit = function()
 Space.Log("Application Quit")
end

this.OnApplicationQuit(OnApplicationQuit)



SetParent

void SetParent (SGameObject other, bool worldPositionStays)

Make this GameObject the child of GameObject 'other'

Space.Host.ExecutingObject.SetParent(otherObjectReference,true)


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



 


Find

SGameObject Find (string name)

Find and return a reference to GameObject with name 'name'

FoundObject = Space.Host.ExecutingObject.Find("GameObject Name")



FindInChildren

SGameObject FindInChildren (string name)

Find and return a reference to GameObject with name 'name' including children

FoundObjectInChildren = Space.Host.ExecutingObject.FindInChildren("GameObject Name")


 
--this script will search throughout it's heirarchy of children and find the specific
-- object we need for us which is useful if the heirarchy is deep and complicated
-- and much better than going through like .Children[1].Children[2].Children[1]... etc...
--(Example: clicking on a house toggles it's lights on and off)
--[Requires 4 children, doesn't matter heirarchy position, named Light1, Light2, Light3, Light4]

thisGameObject = Space.Host.ExecutingObject
LightsAreOn = false


TurnLightsOn= function()
thisGameObject.FindInChildren("Light1").Active = false
thisGameObject.FindInChildren("Light2").Active = false
thisGameObject.FindInChildren("Light3").Active = false
thisGameObject.FindInChildren("Light4").Active = false
LightsAreOn = true
end

TurnLightsOff= function()
thisGameObject.FindInChildren("Light1").Active = true
thisGameObject.FindInChildren("Light2").Active = true
thisGameObject.FindInChildren("Light3").Active = true
thisGameObject.FindInChildren("Light4").Active = true
LightsAreOn = false
end


OnClick = function()
    if LightsAreOn then
      TurnLightsOff()
    else
      TurnLightsOn()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Toggle Lights"
thisGameObject.Clickable.OnClick(OnClick)


GetComponent

SComponent GetComponent (string name)

Return a reference to component with component name 'name' or nil if it doesn't exist

FoundComponent = Space.Host.ExecutingObject.GetComponent("Component Name")




Properties

Active

bool Active { get; set; }

Is this object Active in the scene

Space.Host.ExecutingObject..Active = false


--the below script will make this object become inactive
--after being being clicked
--(Example: picking up fruits)

thisGameObject = Space.Host.ExecutingObject


OnClick = function()
thisGameObject.Active = false
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Pick me!"
thisGameObject.Clickable.OnClick(OnClick)

Layer

int Layer { get; set; }

Gets/Sets the object onto a particular layer (0-31)

Space.Log("This object is on the layer " .. Object.Layer);


Tag

string Tag { get; }

Gets this objects Tag

Space.Log("Object Tag is " .. Object.Tag);


Name

string Name { get; set; }

Gets/sets the name of this object

Object.Name = "Hello World!";


Exists

bool Exists { get; }

Does this object still exist in the scene (returns false if the object has been deleted via Destroy();)

if(!Object.Exists) return;


Parent

SGameObject Parent { get; set; }

Gets/sets the parent GameObject of this object. Assign nil/null to set this as the root.

-- For this example, 2 separate Game Objects ("Cube", "Cube (1)") are used.

-- This Scripting Runtime is the component of the "Cube" object.
-- 1 Object Reference is used: Name: Cube1, references "Cube (1)".

local obj = Space.Host.ExecutingObject;

obj.Parent = Space.Host.GetReference("Cube1");

-- Now "Cube (1)" is the parent of "Cube" (can be observed in Hierarchy).


 --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.Parent = 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) 

Root

SGameObject Root { get; }

Gets the root of this object group - may be this object.

-- For this example, 3 separate Game Objects ("Cube", "Cube (1)", "Cube (2)") are used.

-- "Cube" is the parent of "Cube (1)", "Cube (1)" is the parent of "Cube (2)"
-- This Scripting Runtime is the component of the "Cube (2)" object.

local obj = Space.Host.ExecutingObject;

Space.Log(obj.Root.Name);

-- prints "Cube" to the console


 --this script, although will be inside a child object, will be used to move the entire object heirarchy
--by using the .Root property to move the highest object in heirarchy
--because of we move this object we will only be moving the child object
--(Example: a script in an elevator button that moves whole elevator)

thisGameObject = Space.Host.ExecutingObject

OnClick = function()

thisGameObject.Root.WorldPosition = thisGameObject.Root.WorldPosition + Vector.Up

end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Click to move elevator up"
thisGameObject.Clickable.OnClick(OnClick) 

Children

[[Scripting/SGameObject[]|SGameObject[]]] Children { get; }

Returns the list of direct children of this object.

-- For this example, 3 separate Game Objects ("Cube", "Cube (1)", "Cube (2)") are used.

-- "Cube" is the parent of both "Cube (1)" and "Cube (2)" (in this order in the hierarchy).
-- This Scripting Runtime is the component of the "Cube" object.

local obj = Space.Host.ExecutingObject;

Space.Log(obj.Children[1].Name);
-- prints "Cube (1)" to the console
Space.Log(obj.Children[2].Name);

-- prints "Cube (2)" to the console


 --this script will be placed in a root object, but will be used
--to deactivate/reactivate child objects
--(Example: clicking on a house toggles it's lights on and off)
--[Requires 4 children objects (same level) which are the lights]

thisGameObject = Space.Host.ExecutingObject
LightsAreOn = false


TurnLightsOn= function()
thisGameObject.Children[1].Active = false
thisGameObject.Children[2].Active = false
thisGameObject.Children[3].Active = false
thisGameObject.Children[4].Active = false
LightsAreOn = true
end

TurnLightsOff= function()
thisGameObject.Children[1].Active = true
thisGameObject.Children[2].Active = true
thisGameObject.Children[3].Active = true
thisGameObject.Children[4].Active = true
LightsAreOn = false
end


OnClick = function()
    if LightsAreOn then
      TurnLightsOff()
    else
      TurnLightsOn()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Toggle Lights"
thisGameObject.Clickable.OnClick(OnClick)
 


WorldPosition

SVector WorldPosition { get; set; }

Gets or sets the current position of this object relative to the scene

Space.Host.ExecutingObject.WorldPosition = Vector.New(1,1,1)


 
--the below script will make this object move to the right
--on click and then move back to the left clicked again
--(Example: sliding door open/close)

thisGameObject = Space.Host.ExecutingObject
DoorIsOpen = false


OpenDoor = function()
thisGameObject.WorldPosition = thisGameObject.WorldPosition + thisGameObject.Right
DoorIsOpen = true
end

CloseDoor = function()
thisGameObject.WorldPosition = thisGameObject.WorldPosition - thisGameObject.Right
DoorIsOpen = false
end


OnClick = function()
    if DoorIsOpen then
      CloseDoor()
    else
      OpenDoor()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Open/Close Sliding Door"
thisGameObject.Clickable.OnClick(OnClick) 

LocalPosition

SVector LocalPosition { get; set; }

Gets or sets the current position of this object relative to the objects parent, taking into account local position/scale/rotation

Space.Host.ExecutingObject.LocalPosition = Vector.New(1,1,1)


--this script will make this child object move 1 unit forward everytime it's clicked
thisObject = Space.Host.ExecutingObject

OnClick = function()
  
  thisObject.LocalPosition = thisObject.LocalPosition + thisObject.Forward
  
end


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


WorldRotation

SQuaternion WorldRotation { get; set; }

Gets or sets the current rotation of this object relative to the scene

Space.Host.ExecutingObject.WorldRotation = Quaternion.Euler(0,180,0)


 
--the below script will make this object rotate +90 degrees
--on click and then -90 degrees back once clicked again
--(Example: door open/close)
--[The center of the object should be at the hinge of the door]

thisGameObject = Space.Host.ExecutingObject
DoorIsOpen = false


OpenDoor = function()
local currentY = thisGameObject.WorldRotation.EulerAngles.Y
local newY = currentY + 90

thisGameObject.WorldRotation = Quaternion.Euler(0,newY,0)
DoorIsOpen = true
end

CloseDoor = function()
local currentY = thisGameObject.WorldRotation.EulerAngles.Y
local newY = currentY - 90

thisGameObject.WorldRotation = Quaternion.Euler(0,newY,0)
DoorIsOpen = false
end


OnClick = function()
    if DoorIsOpen then
      CloseDoor()
    else
      OpenDoor()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Open/Close Door"
thisGameObject.Clickable.OnClick(OnClick)
 

LocalRotation

SQuaternion LocalRotation { get; set; }

Gets or sets the current rotation of this object relative to the parent object

Space.Host.ExecutingObject.LocalRotation = Quaternion.Euler(0,180,0)


 --the below script will make this child object rotate
--while the parent object stays fixed
--(Example: A staff which has a rotating orb on top)
--[This object needs to be a child of an object for LocalRotation to be applicable]
--<Note: We multiplied by Space.DeltaTime to achieve movement per second not per frame>

thisGameObject = Space.Host.ExecutingObject
SPEED = 2


OnUpdate = function()
currentY = thisGameObject.LocalRotation.EulerAngles.Y
newY = currentY + ( 1 * Space.DeltaTime * SPEED)
thisGameObject.LocalRotation = Quaternion.Euler(0, newY, 0)
end


thisGameObject.OnUpdate(OnUpdate) 

LocalScale

SVector LocalScale { get; set; }

Gets or sets the current scale of this object relative to the parent

Space.Host.ExecutingObject.LocalScale = Vector.New(2,2,2)


--this script will double this object's size everytime it's clicked

thisObject = Space.Host.ExecutingObject

OnClick = function()
  
  thisObject.LocalScale =   thisObject.LocalScale * 2
  
end


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

WorldScale

SVector WorldScale { get; }

Gets the current scale of this object relative to the scene

worldScale = Space.Host.ExecutingObject.WorldScale 


Forward

SVector Forward { get; }

Returns the forward direction vector of this game object (blue arrow)

local obj = Space.Host.ExecutingObject;

obj.WorldRotation = Quaternion.Euler(0,0,0);
Space.Log(obj.Forward);
-- prints "[0,0,1]" to the console
obj.WorldRotation = Quaternion.Euler(0,90,0);
Space.Log(obj.Forward);

-- prints "[1,0,0]" to the console - now it points in the direction the Right directional vector was pointing in.


--the below script will make this object keep moving Forward (the rotation it is facing)
--(Example: Shooting a bullet to your front)
--<Note: We multiplied .Forward by Space.DeltaTime to achieve movement per second not per frame>
--<Note: If you want to go backwards you can just minus from the WorldPosition instead of add>

thisGameObject = Space.Host.ExecutingObject
SPEED = 2

OnUpdate = function()
thisGameObject.WorldPosition = thisGameObject.WorldPosition + (thisGameObject.Forward * Space.DeltaTime * SPEED)
end

thisGameObject.OnUpdate(OnUpdate)


Up

SVector Up { get; }

Returns the up direction vector of this game object (green arrow)

local obj = Space.Host.ExecutingObject;

obj.WorldRotation = Quaternion.Euler(0,0,0);
Space.Log(obj.Up);
-- prints "[0,1,0]" to the console
obj.WorldRotation = Quaternion.Euler(90,0,0);
Space.Log(obj.Up);

-- prints "[0,0,1]" to the console - now it points in the direction the Forward directional vector was pointing in.


 
--the below script will make this object keep moving to it's Right
--(Example: A rocket travelling upwards)
--<Note: We multiplied .Up by Space.DeltaTime to achieve movement per second not per frame>
--<Note: If you want to go down you can just minus from the WorldPosition instead of add>

thisGameObject = Space.Host.ExecutingObject
SPEED = 1

OnUpdate = function()
thisGameObject.WorldPosition = thisGameObject.WorldPosition + (thisGameObject.Up * Space.DeltaTime * SPEED)
end

thisGameObject.OnUpdate(OnUpdate) 


Right

SVector Right { get; }

Returns the right direction vector of this game object (red arrow)

local obj = Space.Host.ExecutingObject;

obj.WorldRotation = Quaternion.Euler(0,0,0);
Space.Log(obj.Right);
-- prints "[1,0,0]" to the console
obj.WorldRotation = Quaternion.Euler(0,0,90);
Space.Log(obj.Right);

-- prints "[0,1,0]" to the console - now it points in the direction the Up directional vector was pointing in.


--the below script will make this object keep moving to it's Right
--(Example: Shooting a bullet to your right)
--<Note: We multiplied .Right by Space.DeltaTime to achieve movement per second not per frame>
--<Note: If you want to go left you can just minus from the WorldPosition instead of add>

thisGameObject = Space.Host.ExecutingObject
SPEED = 1

OnUpdate = function()
thisGameObject.WorldPosition = thisGameObject.WorldPosition + (thisGameObject.Right * Space.DeltaTime * SPEED)
end

thisGameObject.OnUpdate(OnUpdate)


Light

SLight Light { get; }

Returns a reference to a Light component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the Light component to the object if there is none
if obj.Light == null then

obj.AddLight ();

end

-- Now we can work with the Light component on this object.
-- For example, let's set its colour to Red:

obj.Light.Color = Vector.New(1,0,0);


 --this script will let us click an object and control it's light component
--(Example: clicking a light bulb toggles it's intensity)
--[Requires a Light component on this object]

thisGameObject = Space.Host.ExecutingObject
IntensityIsHigh = false


IncreaseIntensity = function()
thisGameObject.Light.Intensity = 2
IntensityIsHigh = true
end

DecreaseIntensity = function()
thisGameObject.Light.Intensity = 1
IntensityIsHigh = false
end


OnClick = function()
    if IntensityIsHigh then
      DecreaseIntensity()
    else
      IncreaseIntensity()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Toggle Light Intensity"
thisGameObject.Clickable.OnClick(OnClick)
 


Animator

SAnimator Animator { get; }

Returns a reference to a Animator component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

Space.Log(obj.Animator);

-- prints "SAnimator" to the console if there is an Animator component on this object, or an empty string, if there is none.


Audio

SAudioSource Audio { get; }

Returns a reference to a AudioSource component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the AudioSource component to the object if there is none
if obj.Audio == null then

obj.AddAudioSource();

end

Space.Log(obj.Audio);
-- Now we can work with the AudioSource component on this object.
-- For example, let's set its volume to 0.25:

obj.Audio.Volume = 0.25;



Browser

SBrowserSurface Browser { get; }

Returns a reference to a BrowserSurface component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- If this object has a BrowserSurface component, the script will reload the page in it
if obj.Browser ~= null then

obj.Browser.Reload ();
end



Renderer

SRenderer Renderer { get; }

Returns a reference to a Renderer component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- If this object has a Renderer component, let's colour its material blue!
if obj.Renderer ~= null then

obj.Renderer.Material.SetColor("_Color", 0, 0, 1, 1);
end



Clickable

SClickable Clickable { get; }

Returns a reference to a Clickable component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the Clickable component to the object if there is none
if obj.Clickable == null then

obj.AddClickable();

end

Space.Log(obj.Clickable);
--Now we can work with the Clickable component on this object.
-- Let's add an option for the object to be moved up by 1 every time that option is chosen:
local deltaPos = Vector.New(0,1,0);

function MoveItUp ()

obj.WorldPosition = obj.WorldPosition + deltaPos;

end

obj.Clickable.AddExtraAction ("Move up", "Moves the object up by 1.", MoveItUp);


Rigidbody

SRigidbody Rigidbody { get; }

Returns a reference to a Rigidbody component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the Rigidbody component to the object if there is none
if obj.Rigidbody == null then

obj.AddRigidbody();

end

Space.Log(obj.Rigidbody);
-- Now we can work with the Rigidbody component on this object.
-- Let's make it spin!
obj.Rigidbody.UseGravity = false;
obj.Rigidbody.AngularDrag = 0;

obj.Rigidbody.AngularVelocity = Vector.New(0,Space.Math.Pi/2,0);



Collider

SCollider Collider { get; }

Returns a reference to a Collider component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- If this object has a Collider component, let's make it a trigger:
if obj.Collider ~= null then

obj.Collider.IsTrigger = true;
end


UIText

SUIText UIText { get; }

Returns a reference to a UI.Text component on the object. Will return null if it does not exist.

uitext = Space.Host.ExecutingObject.UIText 



NavMeshAgent

SNavMeshAgent NavMeshAgent { get; }

Returns a reference to a NavMeshAgent component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the NavMeshAgent component to the object if there is none
if obj.NavMeshAgent == null then

obj.AddNavMeshAgent();

end

Space.Log(obj.NavMeshAgent);

-- prints "SNavMeshAgent" to the console. Now we can work with the NavMeshAgent component on this object.



Seat

SSeat Seat { get; }

Returns a reference to a Seat component on the object. Will return null if it does not exist.

local obj = Space.Host.ExecutingObject;

-- add the Seat component to the object if there is none
if obj.Seat == null then

obj.AddSeat();

end

Space.Log(obj.Seat);

-- prints "SSeat" to the console. Now we can work with the Seat component on this object.


Owner

long Owner { get; }

Returns the GameObject's Owner

Owner = Space.Host.ExecutingObject.Owner


 --This script will make the object a clickable
--only if you are it's owner
--(example: owner only features)

thisGameObject = Space.Host.ExecutingObject


OnClick = function()
thisGameObject.Destroy()

end

if thisGameObject.Owner == Space.Scene.PlayerAvatar.ID then
  thisGameObject.AddClickable()
  thisGameObject.Clickable.Tooltip = "Click to destroy me"
  thisGameObject.Clickable.OnClick(OnClick)
end 

LocalID

int LocalID { get; }

Returns the GameObject's Local ID

LocalID = Space.Host.ExecutingObject.LocalID


InventoryID

int InventoryID { get; }

Return's the GameObject's InventoryID

InventoryID = Space.Host.ExecutingObject.InventoryID


HasStableID

bool HasStableID { get; }

Returns true if GameObject has Stable ID

HasStableID = Space.Host.ExecutingObject.HasStableID


GlobalID

string GlobalID { get; }

Returns the global ID of the GameObject

GlobalID = Space.Host.ExecutingObject.GlobalID


HingeJoint

SHingeJoint HingeJoint { get; }

Returns a HingeJoint component attached to this object, or nil if none exist

HingeJoint = Space.Host.ExecutingObject.HingeJoint


ReflectionProbe

SReflectionProbe ReflectionProbe { get; }

Returns a ReflectionProbe component attached to this object, or nil if none exist

ReflectionProbe = Space.Host.ExecutingObject.ReflectionProbe


LightInChild

SLight LightInChild { get; }

Returns a Light component attached to this object or its children, or nil if none exist

LightInChild = Space.Host.ExecutingObject.LightInChild


 --this script will let us click an object and control it's child's light component
--(Example: clicking a house toggles it's light bulb intensity)
--[Requires a Light component on a child of this object]

thisGameObject = Space.Host.ExecutingObject
IntensityIsHigh = false


IncreaseIntensity = function()
thisGameObject.LightInChild.Intensity = 2
IntensityIsHigh = true
end

DecreaseIntensity = function()
thisGameObject.LightInChild.Intensity = 1
IntensityIsHigh = false
end


OnClick = function()
    if IntensityIsHigh then
      DecreaseIntensity()
    else
      IncreaseIntensity()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Toggle Light Intensity"
thisGameObject.Clickable.OnClick(OnClick) 

LightInParent

SLight LightInParent { get; }

Returns a Light component attached to this object or it's parent, or nil if none exist

LightInParent = Space.Host.ExecutingObject.LightInParent


 --this script will let us click an object and control it's parent's light component
--(Example: clicking a light switch toggle's a parent light bulb's intensity)
--[Requires a Light component on the parent of this object]

thisGameObject = Space.Host.ExecutingObject
IntensityIsHigh = false


IncreaseIntensity = function()
thisGameObject.LightInParent.Intensity = 2
IntensityIsHigh = true
end

DecreaseIntensity = function()
thisGameObject.LightInParent.Intensity = 1
IntensityIsHigh = false
end


OnClick = function()
    if IntensityIsHigh then
      DecreaseIntensity()
    else
      IncreaseIntensity()
    end
end

thisGameObject.AddClickable()
thisGameObject.Clickable.Tooltip="Toggle Light Intensity"
thisGameObject.Clickable.OnClick(OnClick) 

Floor

SRoomFloor Floor { get; }

Returns a RoomFloor component attached to this object, or nil if none exist

Floor = Space.Host.ExecutingObject.Floor


Animation

SAnimation Animation { get; }

Returns an Animation component attached to this object, or nil if none exist Animation is a legacy component and should not be confused with Animator

Animation = Space.Host.ExecutingObject.Animation


CanvasGroup

SCanvasGroup CanvasGroup { get; }

Returns Canvas Group component attached to this object, or nil if none exist

CanvasGroup = Space.Host.ExecutingObject.CanvasGroup


VoiceZone

SVoiceZone VoiceZone { get; }

Returns a VoiceZone component attached to this object, or nil if none exist

VoiceZone = Space.Host.ExecutingObject.VoiceZone


Director

SPlayableDirector Director { get; }

Returns a PlayableDirector component attached to this object, or nil if none exist

Director = Space.Host.ExecutingObject.Director


Vehicle

SModularVehicle Vehicle { get; }

Returns a Modular Vehicle component attached to this object, or nil if none exist

Vehicle = Space.Host.ExecutingObject.Vehicle


PostProcessVolume

SPostProcessVolume PostProcessVolume { get; }

Returns a Post Process Volume component attached to this object, or nil if none exist

PostProcessVolume = Space.Host.ExecutingObject.PostProcessVolume


Archimatix

SAXModel Archimatix { get; }

Returns a Archimatix Model ("AXModel" component) - or Nil if nothing exists

Archimatix = Space.Host.ExecutingObject.Archimatix


EmbeddedVideo

SEmbeddedVideo EmbeddedVideo { get; }

Returns an Embedded Video component attached to this object, or nil if none exist (may not work within editor)

EmbeddedVideo = Space.Host.ExecutingObject.EmbeddedVideo


Avatar

SAvatar Avatar { get; }

Return's GameObject's Avatar

Avatar = Space.Host.ExecutingObject.Avatar


AvatarAppearance

SAvatarAppearance AvatarAppearance { get; }

Returns a AvatarAppearance component attached to this object, or nil if none exist

AvatarAppearance = Space.Host.ExecutingObject.AvatarAppearance


Script

SScriptingRuntime Script { get; }

Returns a Scripting Runtime component attached to this object, or nil if none exist

Script = Space.Host.ExecutingObject.Script


StateMachine

long StateMachine { get; }

Returns a State Machine component attached to this object, or nil if none exist

StateMachine = Space.Host.ExecutingObject.StateMachine


Events

SScriptingEvents Events { get; }

Returns a Scripting Events component attached to this object, or nil if none exist

Events = Space.Host.ExecutingObject.Events


Data

SScriptingData Data { get; }

Returns a Scripting Data component attached to this object, or nil if none exist

Data = Space.Host.ExecutingObject.Data


BoxCollider

SBoxCollider BoxCollider { get; }

Returns a Box Collider component attached to this object, or nil if none exist

BoxCollider = Space.Host.ExecutingObject.BoxCollider


SphereCollider

SSphereCollider SphereCollider { get; }

Returns a Sphere Collider component attached to this object, or nil if none exist

SphereCollider = Space.Host.ExecutingObject.SphereCollider


CapsuleCollider

SCapsuleCollider CapsuleCollider { get; }

Returns a Capsule Collider component attached to this object, or nil if none exist

CapsuleCollider = Space.Host.ExecutingObject.CapsuleCollider


CharacterController

SCharacterController CharacterController { get; }

Returns a Character Controller component attached to this object, or nil if none exist

CharacterController = Space.Host.ExecutingObject.CharacterController


AudioReactive

SAudioReactiveBase AudioReactive { get; }

Returns the first Audio Reactive component attached to this object, or nil if none exist

AudioReactive = Space.Host.ExecutingObject.AudioReactive


AttachmentHelper

SAttachmentHelper AttachmentHelper { get; }

Returns the first Attachment Helper component attached to this object, or nil if none exist

AttachmentHelper = Space.Host.ExecutingObject.AttachmentHelper


AudioReactiveAnimation

SAudioReactiveAnimation AudioReactiveAnimation { get; }

Returns the first Audio Reactive Animation component attached to this object, or nil if none exist

AudioReactiveAnimation = Space.Host.ExecutingObject.AudioReactiveAnimation


AudioReactiveLight

SAudioReactiveLight AudioReactiveLight { get; }

Returns the first Audio Reactive Light component attached to this object, or nil if none exist

AudioReactiveLight = Space.Host.ExecutingObject.AudioReactiveLight


AudioReactiveParticleSystem

SAudioReactiveParticleSystem AudioReactiveParticleSystem { get; }

Returns the first Audio Reactive Particle System component attached to this object, or nil if none exist

AudioReactiveParticleSystem = Space.Host.ExecutingObject.AudioReactiveParticleSystem


AudioReactiveMaterial

SAudioReactiveMaterial AudioReactiveMaterial { get; }

Returns the first Audio Reactive Material component attached to this object, or nil if none exist

AudioReactiveMaterial = Space.Host.ExecutingObject.AudioReactiveMaterial


AudioReactiveTransform

SAudioReactiveTransform AudioReactiveTransform { get; }

Returns the first Audio Reactive Transform component attached to this object, or nil if none exist

AudioReactiveTransform = Space.Host.ExecutingObject.AudioReactiveTransform


TrailRenderer

STrailRenderer TrailRenderer { get; }

Returns a Trail Renderer component attached to this object, or nil if none exist

TrailRenderer = Space.Host.ExecutingObject.TrailRenderer


LineRenderer

SLineRenderer LineRenderer { get; }

Returns a Line Renderer component attached to this object, or nil if none exist

LineRenderer = Space.Host.ExecutingObject.LineRenderer


UILayout

SUILayout UILayout { get; }

Returns a Renderer component attached to this object, or nil if none exist

UILayout = Space.Host.ExecutingObject.UILayout


UIToggle

SUIToggle UIToggle { get; }

Returns a Unity uGUI Toggle component attached to this object, or nil if none exist

UIToggle = Space.Host.ExecutingObject.UIToggle


UIDropdown

SUIDropdown UIDropdown { get; }

Returns a Unity uGUI Dropdown component attached to this object, or nil if none exist

UIDropdown = Space.Host.ExecutingObject.UIDropdown


UIButton

SUIButton UIButton { get; }

Returns a Unity uGUI Dropdown component attached to this object, or nil if none exist

UIButton = Space.Host.ExecutingObject.UIButton


UISlider

SUISlider UISlider { get; }

Returns a Unity uGUI Slider component attached to this object, or nil if none exist

UISlider = Space.Host.ExecutingObject.UISlider


UIScrollbar

SUIScrollbar UIScrollbar { get; }

Returns a Unity uGUI Scrollbar component attached to this object, or nil if none exist

UIScrollbar = Space.Host.ExecutingObject.UIScrollbar


UICanvas

SUICanvas UICanvas { get; }

Returns a Unity uGUI Canvas component attached to this object, or nil if none exist

UICanvas = Space.Host.ExecutingObject.UICanvas


UIImage

SUIImage UIImage { get; }

Returns a Unity uGUI Image component attached to this object, or nil if none exist

UIImage = Space.Host.ExecutingObject.UIImage


UIRawImage

SUIRawImage UIRawImage { get; }

Returns a Unity uGUI Text component attached to this object, or nil if none exist

UIRawImage = Space.Host.ExecutingObject.UIRawImage


UIInputField

SUIInputField UIInputField { get; }

Returns a Unity uGUI Text component attached to this object, or nil if none exist

UIInputField = Space.Host.ExecutingObject.UIInputField


VirtualCamera

SVirtualCamera VirtualCamera { get; }

Returns a VirtualCamera component attached to this object, or nil if none exists

VirtualCamera = Space.Host.ExecutingObject.VirtualCamera


Cloth

SCloth Cloth { get; }

Returns a Cloth component attached to this object, or nil if none exists

Cloth = Space.Host.ExecutingObject.Cloth


MeshRenderer

SMeshRenderer MeshRenderer { get; }

Returns a MeshRenderer component attached to this object, or nil if none exists

MeshRenderer = Space.Host.ExecutingObject.MeshRenderer


Furniture

SFurniture Furniture { get; }

Returns a Furniture component attached to this object, or nil if none exists

Furniture = Space.Host.ExecutingObject.Furniture


ParticleSystem

SParticleSystem ParticleSystem { get; }

Returns a ParticleSystem component attached to this object, or nil if none exists

ParticleSystem = Space.Host.ExecutingObject.ParticleSystem


NavMeshObstacle

SNavMeshObstacle NavMeshObstacle { get; }

Returns a NavMeshObstacle component attached to this object, or nil if none exists

NavMeshObstacle = Space.Host.ExecutingObject.NavMeshObstacle


Networking

SNetworking Networking { get; }

Returns a Simple Networking component attached to this object, or nil if none exists

SimpleNetworking = Space.Host.ExecutingObject.Networking


RectTransform

SRectTransform RectTransform { get; }

Returns a RectTransform component attached to this object, or nil if none exists

RectTransform = Space.Host.ExecutingObject.RectTransform


SkinnedMeshRenderer

SSkinnedMeshRenderer SkinnedMeshRenderer { get; }

Returns a SkinnedMeshRenderer component attached to this object, or nil if none exists

SkinnedMeshRenderer = Space.Host.ExecutingObject.SkinnedMeshRenderer


Radio

SSceneBackgroundMusic Radio { get; }

Returns a SceneBackgroundMusic component attached to this object, or nil if none exists

Radio = Space.Host.ExecutingObject.Radio


Terrain

STerrain Terrain { get; }

Returns a Terrain component attached to this object, or nil if none exists

Terrain = Space.Host.ExecutingObject.Terrain


Alive

bool Alive { get; }

Returns true if GameObject is Alive

Alive = Space.Host.ExecutingObject.Alive


ActiveSelf

bool ActiveSelf { get;set; }

Returns true if GameObject is Active (even if it's parent is not active)

ActiveSelf = Space.Host.ExecutingObject.ActiveSelf


--the below script will make the object toggle active/inactive it's child

thisGameObject = Space.Host.ExecutingObject
child = thisGameObject.Children[1]
 
OnClick = function()

  if child.ActiveSelf then
    child.ActiveSelf = false
  else
    child.ActiveSelf = true
  end
  
end

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

EventCalendar

SEventCalendar EventCalendar { get; }

Returns an EventCalendar component attached to this object, or nil if none exists

EventCalendar = Space.Host.ExecutingObject.EventCalendar