wiki.sine.space | sinespace

Difference between revisions of "Scripting/SScript"

From wiki.sine.space
Jump to: navigation, search
Line 34: Line 34:
 
{{ScriptFunction|void|Log|{DynValue text;}|Log a message to console.|Space.Log("Log")<br>
 
{{ScriptFunction|void|Log|{DynValue text;}|Log a message to console.|Space.Log("Log")<br>
 
Space.Log("Log",true)
 
Space.Log("Log",true)
 +
}}
 +
 +
{{ScriptFunction|string|TypeName|{DynValue dv }|Return the type name of the value.|Space.Log(Space.TypeName("123"))
 
}}
 
}}
  
Line 44: Line 47:
 
}}
 
}}
  
{{ScriptFunction|string|TypeName|{get; }|Return the type name of the value.|Space.Log(Space.TypeName("123"))
+
 
}}
+
  
 
{{ScriptFunction|string|SessionID|{get; }|Return current SessionID.|Space.Log(Space.SessionID)
 
{{ScriptFunction|string|SessionID|{get; }|Return current SessionID.|Space.Log(Space.SessionID)
Line 106: Line 108:
 
Space.Host.StartCoroutine(co)</pre>}}
 
Space.Host.StartCoroutine(co)</pre>}}
  
{{ScriptFunction|int|ServerTimeUnix|[get;]|Returns server unix timestamp.|Space.Log(Space.ServerTimeUnix)
+
{{ScriptFunction|int|ServerTimeUnix|[get;]|Returns the server unix timestamp.|Space.Log(Space.ServerTimeUnix)
 
}}
 
}}
  
{{ScriptFunction|int|LocalTimeUnix|[get;]|Returns local unix timestamp.|Space.Log(Space.LocalTimeUnix)
+
{{ScriptFunction|int|LocalTimeUnix|[get;]|Returns the local unix timestamp.|Space.Log(Space.LocalTimeUnix)
 
}}
 
}}
 +
 +
{{ScriptFunction|int|LoginTime|[get;]|Returns how long player has been logged in (in seconds).|5= <pre>Space.Log(Space.LoginTime)<pre>|6=<pre>--this script will update a UIText object with the current local time
 +
--(example: clock)
 +
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]
 +
 +
text = Space.Host.GetReference("Text").UIText
 +
 +
co = function()
 +
  while true do
 +
  text.Text = Space.LoginTime
 +
    coroutine.yield(1)
 +
  end
 +
end
 +
 +
Space.Host.StartCoroutine(co)</pre>}}
  
 
{{ScriptFunction|float|DeltaTime|[get;]|The completion time in seconds since the last frame.|Space.Log(Space.DeltaTime)|6= <pre>--the below script rotates an object around Y axis but uses DeltaTime  
 
{{ScriptFunction|float|DeltaTime|[get;]|The completion time in seconds since the last frame.|Space.Log(Space.DeltaTime)|6= <pre>--the below script rotates an object around Y axis but uses DeltaTime  
Line 127: Line 144:
 
end
 
end
  
 
thisGameObject.SubscribeToEvents()
 
 
thisGameObject.OnUpdate(OnUpdate)</pre>
 
thisGameObject.OnUpdate(OnUpdate)</pre>
 
}}
 
}}

Revision as of 09:00, 21 September 2021

The 'Space' global accessible in every script (for C# scripts, this inherits from the SpaceScript base class)

Attributes

Inventory

SInventory Inventory { get; }

Allows access to the users inventory

Space.Inventory.Authorize()


Persistence

SPersistence Persistence { get; }

Stores information between user sessions, and for other users

Space.Persistence.RetrieveValue("value1")


Scene

SScene Scene { get; }

Allows access to the current scene graph (objects and avatars in the scene, and other information)

Space.Scene.PlayerAvatar


Host

SHost Host { get; }

Access information about the current scripting runtime host

Space.Host.StartCoroutine(CoFunc)


Physics

SPhysics Physics { get; }

Call physics-related commands, and variables, such as raycasting

Space.Physics.RayCast(trans.WorldPosition,trans.Forward,50)


Math

SMath Math { get; }

Math related functions (Sin, Cos, Tan, etc)

Space.Math.Ceil(4.0)


String

SString String { get; }

Miscellaneous additional string functions (e.g. MD5Sum)

Space.String.GetBytes("some data")


Input

SInput Input { get; }

Input device related functions (mouse position, keyboard state)

Space.Input.Vibrate(1,1,false)


CameraManager

SCameraManager CameraManager { get; }

Take and control the users camera

obj = Space.Host.ExecutingObject
Space.Camera.LockCamera (obj)


WebServices

SWebService WebServices { get; }

Call remote web services to designated hosts (will not work with arbitrary domains, see page for details)

Space.WebServices.GetImage("example.com/mrlee.jpg")


Network

SNetwork Network { get; }

Send data to other clients through the region server

Space.Network.SubscribeToNetwork("helloworld", gotAMessageFunction)



Members

GetResource

SResource GetResource {string name;}

Returns a resource with its name.

Space.Log(Space.GetResource("Texture").Name)

--Print "Texture" when it is exists.


Log

void Log {DynValue text;}

Log a message to console.

Space.Log("Log")

Space.Log("Log",true)


TypeName

string TypeName {DynValue dv }

Return the type name of the value.

Space.Log(Space.TypeName("123"))


Properties

RuntimeType

string RuntimeType {get; }

Return current RuntimeType name.

Space.Log(Space.RuntimeType)


Platform

string Platform {get; }

Return current platform name.

Space.Log(Space.Platform)



SessionID

string SessionID {get; }

Return current SessionID.

Space.Log(Space.SessionID)


TrackingAllowed

bool TrackingAllowed {string key;}

Always return false on the main grid.

Space.Log(Space.TrackingAllowed("YourKey"))


InEditor

bool InEditor [get;]

Return true if in unity editor.

Space.Log(Space.InEditor)


--the below script checks if we are in Unity editor or in SS
--this way we can provide an alternative
--(Example: if we're using a function that doesn't work in Unity editor)

thisGameObject = Space.Host.ExecutingObject


if Space.InEditor then
avatarUsername = "Player Name"
else
avatarUsername = Space.Scene.GetAvatar(thisGameObject.Owner).Username --example: this doesn't work in Editor
end

Space.Log(avatarUsername)

Resources

SResource Resources [get;]

Return all resources.

Space.Log(#Space.Resources)


Time

float Time [get;]

Returns time at the beginning of this frame.

Space.Log(Space.Time)


ServerTime

string ServerTime [get;]

Returns current server time.

Space.Log(Space.ServerTime)


--this script will update a UIText object with the current server time (UTC)
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
  while true do
   text.Text = Space.ServerTime
    coroutine.yield(1)
  end
end

Space.Host.StartCoroutine(co)

LocalTime

string LocalTime [get;]

Returns current local time.

Space.Log(Space.LocalTime)


--this script will update a UIText object with the current local time
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
  while true do
   text.Text = Space.LocalTime
    coroutine.yield(1)
  end
end

Space.Host.StartCoroutine(co)

ServerTimeUnix

int ServerTimeUnix [get;]

Returns the server unix timestamp.

Space.Log(Space.ServerTimeUnix)


LocalTimeUnix

int LocalTimeUnix [get;]

Returns the local unix timestamp.

Space.Log(Space.LocalTimeUnix)


LoginTime

int LoginTime [get;]

Returns how long player has been logged in (in seconds).

Space.Log(Space.LoginTime)<pre>|6=<pre>--this script will update a UIText object with the current local time
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
  while true do
   text.Text = Space.LoginTime
    coroutine.yield(1)
  end
end

Space.Host.StartCoroutine(co)


DeltaTime

float DeltaTime [get;]

The completion time in seconds since the last frame.

Space.Log(Space.DeltaTime)


--the below script rotates an object around Y axis but uses DeltaTime 
--to make sure it's not dependant on client's Framerate (FPS)
--this way the object rotates per second not per frame
--(Example: Important movement in OnUpdate)

thisGameObject = Space.Host.ExecutingObject



OnUpdate = function()
currentY = thisGameObject.WorldRotation.EulerAngles.Y
newRotation = Quaternion.Euler(0, currentY + 1 * Space.DeltaTime, 0) --We multiplied 1 by Space.DeltaTime
thisGameObject.WorldRotation = newRotation
end

thisGameObject.OnUpdate(OnUpdate)

PreviewServer

bool PreviewServer [get;]

Return true if in preview server.

Space.Log(Space.PreviewServer)