local vector = Vector.New(10, 10, 10);local vectorOther = Vector.New(2, 2, 2);Space.Log(vector.Divide(vectorOther));-- prints [5, 5, 5]Space.Log(vector / vectorOther);-- prints [5, 5, 5]
local vector = Vector.New(10, 10, 10);Space.Log(vector.Divide(2));-- prints [5, 5, 5]Space.Log(vector /2);-- prints [5, 5, 5]
Distance
float Distance (SVector other)
Returns the distance between this vector and other in meters
Parameter
Type
Description
local vector = Vector.New(3, 3, 3.5);local vectorOther = Vector.New(2, 2, 2);Space.Log(vector.Distance(vectorOther));-- prints 2.06155276298523
--the below script will change the objects color to green if you are near the object --and change color to red if you are far from the object thisGameObject = Space.Host.ExecutingObjectfunctionOnUpdate() positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition positionObject = thisGameObject.WorldPositionif positionAvatar.Distance(positionObject) <5then thisGameObject.Renderer.Material.SetColor("_Color",0,1,0,1)else thisGameObject.Renderer.Material.SetColor("_Color",1,0,0,1)endendthisGameObject.OnUpdate(OnUpdate)
SquareDistance
float SquareDistance (SVector other)
Returns the square of the distance between this vector and other in meters, considerably faster than distance()
Parameter
Type
Description
local vector = Vector.New(3, 3, 3.5);local vectorOther = Vector.New(2, 2, 2);Space.Log(vector.SquareDistance(vectorOther));-- prints 4.25
--the below script will change the objects color to green if you are near the object --and change color to red if you are far from the object thisGameObject = Space.Host.ExecutingObjectfunctionOnUpdate() positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition positionObject = thisGameObject.WorldPositionif positionAvatar.SquareDistance(positionObject) <25then thisGameObject.Renderer.Material.SetColor("_Color",0,1,0,1)else thisGameObject.Renderer.Material.SetColor("_Color",1,0,0,1)endendthisGameObject.OnUpdate(OnUpdate)
InRange
bool InRange (SVector other, float range)
Returns if other is within range meters of this vector, inclusive
Parameter
Type
Description
local vector = Vector.New(370, 30, 0);local vectorOther = Vector.New(372, 30, 0);Space.Log(vector.InRange(vectorOther, 2.0));-- prints Truelocal vector2 = Vector.New(80, 30, 20);local vectorOther2 = Vector.New(1, 15, 25);Space.Log(vector2.InRange(vectorOther2, 1.0));-- prints False
--the below script will change the objects color to green if you are near the object --and change color to red if you are far from the object --(example: motion sensor lights)thisGameObject = Space.Host.ExecutingObjectfunctionOnUpdate() positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition positionObject = thisGameObject.WorldPositionif positionAvatar.InRange(positionObject, 5.0) then thisGameObject.Renderer.Material.SetColor("_Color",0,1,0,1)else thisGameObject.Renderer.Material.SetColor("_Color",1,0,0,1)endendthisGameObject.SubscribeToEvents()thisGameObject.OnUpdate(OnUpdate)
Cross
SVector Cross (SVector other)
Returns the cross product of this vector and other
Parameter
Type
Description
local vector = Vector.New(0, 1, 0);local vectorOther = Vector.New(1, 0, 0);Space.Log(vector.Cross(vectorOther));-- prints [0, 0, -1]
Lerp
SVector Lerp (SVector other, float t)
Linear interpolates between this and other based on factor t (0-1)
-- Lua Translation of Unity C# Documentation--[["StartMarker" and "EndMaker" are game objects set up as endpoints.These objects are attached to the script in the Object Reference section.The name fields in that section should match these names for the example. --]]local startMarker = Space.Host.GetReference("StartMarker");local endMarker = Space.Host.GetReference("EndMarker");local ball = Space.Host.ExecutingObject;local speed =1.0;local startTime;local journeyLength;ball.SubscribeToEvents();localonStartMethod=function() startTime = Space.Time; journeyLength = startMarker.LocalPosition.Distance(endMarker.LocalPosition);end-- This ball object will move from the start endpoint object to the end endpoint.localmoveBall=function()local distCovered = (Space.Time - startTime) * speed;local fracJourney = distCovered / journeyLength; ball.LocalPosition = startMarker.LocalPosition.Lerp(endMarker.LocalPosition, fracJourney);endball.OnStart(onStartMethod);ball.OnUpdate(moveBall);
Slerp
SVector Slerp (SVector other, float t)
Spherically linear interpolates between this and other based on factor t (0-1)
-- Lua Translation of Unity C# Documentation--[["Sunrise" and "Sunset" are game objects set up as endpoints.These objects are attached to the script in the Object Reference section.The name fields in that section should match these names for the example. --]]local sunrise = Space.Host.GetReference("Sunrise");local sunset = Space.Host.GetReference("Sunset");local ball = Space.Host.ExecutingObject;local startTime;local journeyTime =1.0;ball.SubscribeToEvents();localonStartMethod=function() startTime = Space.Time;end-- This ball object will move from the start endpoint object to the end endpoint.localmoveBall=function()local center = (sunrise.LocalPosition + sunset.LocalPosition) *0.5; center = center - Vector.Up;local riseRelCenter = sunrise.LocalPosition - center;local setRelCenter = sunset.LocalPosition - center;local fracComplete = (Space.Time - startTime) / journeyTime; ball.LocalPosition = riseRelCenter.Slerp(setRelCenter, fracComplete); ball.LocalPosition = ball.LocalPosition + center;endball.OnStart(onStartMethod);ball.OnUpdate(moveBall);
-- Lua Translation of Unity C# Documentation--[["Target" is a game object set up as a target position.This object is attached to the script in the Object Reference section.The name field in that section should match this name for the example. --]]local target = Space.Host.GetReference("Target");local ball = Space.Host.ExecutingObject;local speed =1.0;VectolocalonStartMethod=function() startTime = Space.Time;end-- This ball object will move towards the target. Negative values for-- the maxDistance parameter will push the ball away from the target.localmoveBall=function()local step = speed * Space.DeltaTime; ball.LocalPosition = ball.LocalPosition.MoveTowards(target.LocalPosition, step);endball.OnStart(onStartMethod);ball.OnUpdate(moveBall);-- NOTE: If you use MoveTowards, the movement will not overshoot the target.
Dot
float Dot (SVector other)
Returns the dot product between this and other (note - normalise your vectors first!
Parameter
Type
Description
local vectorA = Vector.New(0, 1, 0);local vectorOtherA = Vector.New(1, 0, 0);Space.Log(vectorA.Dot(vectorOtherA));-- prints 0local vectorB = Vector.New(0, 1, 0);local vectorOtherB = Vector.New(0, 1, 0);Space.Log(vectorB.Dot(vectorOtherB));-- prints 1local vectorC = Vector.New(0, 1, 0);local vectorOtherC = Vector.New(0, -1, 0);Space.Log(vectorC.Dot(vectorOtherC));-- prints -1
Equals
bool Equals (SVector other)
Function Description
Parameter
Type
Description
isEqual = Vector.Up.Equals( Vector.New(0,1,0) )
ToString
string ToString ()
Function Description
stringVector = Vector.New(0,0,0).ToString()
New
static SVector New (float x, float y, float z)
Initialises vector from three floats
Parameter
Type
Description
newVector = Vector.New(0, 1, 0)
operator+
static SVector operator+ (SVector a, SVector b)
static SVector operator+ (SVector a, float b)
Function Description
Parameter
Type
Description
example 1
operator-
static SVector operator- (SVector a, SVector b)
static SVector operator- (SVector a, float b)
Function Description
Parameter
Type
Description
example 1
operator*
static SVector operator* (SVector a, SVector b)
static SVector operator* (SVector a, float b)
Function Description
Parameter
Type
Description
example 1
operator/
static SVector operator/ (SVector a, SVector b)
static SVector operator/ (SVector a, float b)
Function Description
Parameter
Type
Description
example 1
Properties
X
float Xgetset
X axis (red axis)
newVect = Vector.New(0,0,0)newVect.X =5.0
local obj = Space.Host.ExecutingObject;local originalPos = obj.LocalPosition;obj.SubscribeToEvents();localonStartMethod=function() Space.Log(originalPos.x);-- prints the X axis position of this object as a float originalPos.x =100.0;-- assigns 100.0 value to the X axis position of this object obj.LocalPosition = originalPos;-- sets the the new positionendobj.OnStart(onStartMethod);
Y
float Ygetset
Y axis (green axis)
newVect = Vector.New(0,0,0)newVect.Y =5.0
local obj = Space.Host.ExecutingObject;local originalPos = obj.LocalPosition;obj.SubscribeToEvents();localonStartMethod=function() Space.Log(originalPos.y);-- prints the Y axis position of this object as a float originalPos.y =100.0;-- assigns 100.0 value to the Y axis position of this object obj.LocalPosition = originalPos;-- sets the the new positionendobj.OnStart(onStartMethod);
Z
float Zgetset
Z axis (blue axis)
newVect = Vector.New(0,0,0)newVect.Z =5.0
local obj = Space.Host.ExecutingObjectlocal originalPos = obj.LocalPositionlocalonStartMethod=function() Space.Log(originalPos.z)-- prints the Z axis position of this object as a float originalPos.z =100.0-- assigns 100.0 value to the Z axis position of this object obj.LocalPosition = originalPos-- sets the the new positionendobj.OnStart(onStartMethod)
--this script will make clicking this object move 2 units up on the world Y axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Up *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Down
static SVector Downget
Equivalent of new SVector(0,-1,0)
down = Vector.Down
--this script will make clicking this object move 2 units down on the world Y axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Down *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Left
static SVector Leftget
Equivalent of new SVector(-1,0,0)
left = Vector.Left
--this script will make clicking this object move 2 units left on the world X axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Left *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Right
static SVector Rightget
Equivalent of new SVector(1,0,0)
right = Vector.Right
--this script will make clicking this object move 2 units right on the world X axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Right *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Forward
static SVector Forwardget
Equivalent of new SVector(0,0,1)
forward = Vector.Forward
--this script will make clicking this object move 2 units Forward on the world Z axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Forward *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Back
static SVector Backget
Equivalent of new SVector(0,0,-1)
back = Vector.Back
--this script will make clicking this object move 2 units Back on the world Z axisthisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Back *2)endthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
Zero
static SVector Zeroget
Equivalent of new SVector(0,0,0)
vectorZero = Vector.Zero
--clicking this object move it to the center of the region <0,0,0>thisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = Vector.ZeroendthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
One
static SVector Oneget
Equivalent of new SVector(1,1,1)
vectorOne = Vector.One
--clicking this object move it to the <1,1,1> coordinates of the region.thisObject = Space.Host.ExecutingObjectOnClick=function() thisObject.WorldPosition = Vector.OneendthisObject.AddClickable()thisObject.Clickable.OnClick(OnClick)
MaxValue
static SVector MaxValueget
Contains the largest possible vector [3.402823E+38, 3.402823E+38, 3.402823E+38]