SVector
Index
Functions Index
| Function |
|---|
| float Distance (SVector other) |
| float SquareDistance (SVector other) |
| bool InRange (SVector other, float range) |
| SVector Cross (SVector other) |
| SVector Lerp (SVector other, float t) |
| SVector Slerp (SVector other, float t) |
| SVector MoveTowards (SVector other, float maxDistance) |
| float Dot (SVector other) |
| bool Equals (SVector other) |
| string ToString () |
| Static Functions |
| static SVector New (float x, float y, float z) |
static SVector operator+ (SVector a, SVector b) |
static SVector operator- (SVector a, SVector b) |
static SVector operator* (SVector a, SVector b) |
static SVector operator/ (SVector a, SVector b) |
Properties Index
| Property |
|---|
float X get set |
float Y get set |
float Z get set |
float Magnitude get |
SVector Normalised get |
| Static Properties |
static SVector Up get |
static SVector Down get |
static SVector Left get |
static SVector Right get |
static SVector Forward get |
static SVector Back get |
static SVector Zero get |
static SVector One get |
static SVector MaxValue get |
static SVector MinValue get |
Functions
Add
SVector Add (SVector other)
SVector Add (float other)
Adds this Vector
| Parameter | Type | Description |
|---|---|---|
- Lua
local vector = Vector.New(0, 10, 0);
local vectorOther = Vector.New(40, 50, 6);
Space.Log(vector.Add(vectorOther));
-- prints [40, 60, 6]
Space.Log(vector + vectorOther);
-- prints [40, 60, 6]
- Lua
local vectorB = Vector.New(0, 10, 0);
Space.Log(vectorB.Add(5));
-- prints [5, 15, 5]
Scale
SVector Scale (SVector other)
SVector Scale (float other)
Multiplies this Vector
| Parameter | Type | Description |
|---|---|---|
- Lua
local vector = Vector.New(0, 10, 0);
local vectorOther = Vector.New(2, 5, 4);
Space.Log(vector.Scale(vectorOther));
-- prints [0, 50, 0]
Space.Log(vector * vectorOther);
-- prints [0, 50, 0]
- Lua
local vector = Vector.New(0, 10, 0);
Space.Log(vector.Scale(5));
-- prints [0, 50, 0]
Space.Log(vector * 5);
-- prints [0, 50, 0]
Divide
SVector Divide (SVector other)
SVector Divide (float other)
Divides this Vector
| Parameter | Type | Description |
|---|---|---|
- Lua
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]
- Lua
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 |
|---|---|---|
- Lua
local vector = Vector.New(3, 3, 3.5);
local vectorOther = Vector.New(2, 2, 2);
Space.Log(vector.Distance(vectorOther));
-- prints 2.06155276298523
- Lua
--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.ExecutingObject
function OnUpdate()
positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition
positionObject = thisGameObject.WorldPosition
if positionAvatar.Distance(positionObject) < 5 then
thisGameObject.Renderer.Material.SetColor("_Color",0,1,0,1)
else
thisGameObject.Renderer.Material.SetColor("_Color",1,0,0,1)
end
end
thisGameObject.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 |
|---|---|---|
- Lua
local vector = Vector.New(3, 3, 3.5);
local vectorOther = Vector.New(2, 2, 2);
Space.Log(vector.SquareDistance(vectorOther));
-- prints 4.25
- Lua
--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.ExecutingObject
function OnUpdate()
positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition
positionObject = thisGameObject.WorldPosition
if positionAvatar.SquareDistance(positionObject) < 25 then
thisGameObject.Renderer.Material.SetColor("_Color",0,1,0,1)
else
thisGameObject.Renderer.Material.SetColor("_Color",1,0,0,1)
end
end
thisGameObject.OnUpdate(OnUpdate)
InRange
bool InRange (SVector other, float range)
Returns if other is within range meters of this vector, inclusive
| Parameter | Type | Description |
|---|---|---|
- Lua
local vector = Vector.New(370, 30, 0);
local vectorOther = Vector.New(372, 30, 0);
Space.Log(vector.InRange(vectorOther, 2.0));
-- prints True
local vector2 = Vector.New(80, 30, 20);
local vectorOther2 = Vector.New(1, 15, 25);
Space.Log(vector2.InRange(vectorOther2, 1.0));
-- prints False
- Lua
--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.ExecutingObject
function OnUpdate()
positionAvatar = Space.Scene.PlayerAvatar.GameObject.WorldPosition
positionObject = thisGameObject.WorldPosition
if 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)
end
end
thisGameObject.SubscribeToEvents()
thisGameObject.OnUpdate(OnUpdate)
Cross
SVector Cross (SVector other)
Returns the cross product of this vector and other
| Parameter | Type | Description |
|---|---|---|
- Lua
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)
| Parameter | Type | Description |
|---|---|---|
- Lua
lerpVector = currentVector.Lerp(targetVector, 0.5)
- Lua
-- 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();
local onStartMethod = 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.
local moveBall = function()
local distCovered = (Space.Time - startTime) * speed;
local fracJourney = distCovered / journeyLength;
ball.LocalPosition = startMarker.LocalPosition.Lerp(endMarker.LocalPosition, fracJourney);
end
ball.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)
| Parameter | Type | Description |
|---|---|---|
- Lua
slerpVector = currentVector.Slerp(targetVector, 0.5)
- Lua
-- 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();
local onStartMethod = function()
startTime = Space.Time;
end
-- This ball object will move from the start endpoint object to the end endpoint.
local moveBall = 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;
end
ball.OnStart(onStartMethod);
ball.OnUpdate(moveBall);
MoveTowards
SVector MoveTowards (SVector other, float maxDistance)
Moves this vector closer to other by a maximum of maxDistance units
| Parameter | Type | Description |
|---|---|---|
- Lua
newVector = currentVector.MoveTowards(targetVector)
- Lua
-- 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;Vecto
local onStartMethod = 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.
local moveBall = function()
local step = speed * Space.DeltaTime;
ball.LocalPosition = ball.LocalPosition.MoveTowards(target.LocalPosition, step);
end
ball.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 |
|---|---|---|
- Lua
local vectorA = Vector.New(0, 1, 0);
local vectorOtherA = Vector.New(1, 0, 0);
Space.Log(vectorA.Dot(vectorOtherA));
-- prints 0
local vectorB = Vector.New(0, 1, 0);
local vectorOtherB = Vector.New(0, 1, 0);
Space.Log(vectorB.Dot(vectorOtherB));
-- prints 1
local 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 |
|---|---|---|
- Lua
isEqual = Vector.Up.Equals( Vector.New(0,1,0) )
ToString
string ToString ()
Function Description
- Lua
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 |
|---|---|---|
- Lua
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 |
|---|---|---|
- Lua
example 1
operator-
static SVector operator- (SVector a, SVector b)
static SVector operator- (SVector a, float b)
Function Description
| Parameter | Type | Description |
|---|---|---|
- Lua
example 1
operator*
static SVector operator* (SVector a, SVector b)
static SVector operator* (SVector a, float b)
Function Description
| Parameter | Type | Description |
|---|---|---|
- Lua
example 1
operator/
static SVector operator/ (SVector a, SVector b)
static SVector operator/ (SVector a, float b)
Function Description
| Parameter | Type | Description |
|---|---|---|
- Lua
example 1
Properties
X
float X get set
X axis (red axis)
- Lua
newVect = Vector.New(0,0,0)
newVect.X = 5.0
- Lua
local obj = Space.Host.ExecutingObject;
local originalPos = obj.LocalPosition;
obj.SubscribeToEvents();
local onStartMethod = 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 position
end
obj.OnStart(onStartMethod);
Y
float Y get set
Y axis (green axis)
- Lua
newVect = Vector.New(0,0,0)
newVect.Y = 5.0
- Lua
local obj = Space.Host.ExecutingObject;
local originalPos = obj.LocalPosition;
obj.SubscribeToEvents();
local onStartMethod = 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 position
end
obj.OnStart(onStartMethod);
Z
float Z get set
Z axis (blue axis)
- Lua
newVect = Vector.New(0,0,0)
newVect.Z = 5.0
- Lua
local obj = Space.Host.ExecutingObject
local originalPos = obj.LocalPosition
local onStartMethod = 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 position
end
obj.OnStart(onStartMethod)
Magnitude
float Magnitude get
Returns the magnitude of this vector
- Lua
vector = Vector.New(1.0, 5.0, 0.0)
vectorMagnitude = vector.Magnitude
Normalised
SVector Normalised get
Returns the normalised version of this vector
- Lua
vector = Vector.New(0.0, 10.0, 0.0)
vectorNormalised = vector.Normalised
Up
static SVector Up get
Equivalent of new SVector(0,1,0)
- Lua
up = Vector.Up
- Lua
--this script will make clicking this object move 2 units up on the world Y axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Up * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Down
static SVector Down get
Equivalent of new SVector(0,-1,0)
- Lua
down = Vector.Down
- Lua
--this script will make clicking this object move 2 units down on the world Y axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Down * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Left
static SVector Left get
Equivalent of new SVector(-1,0,0)
- Lua
left = Vector.Left
- Lua
--this script will make clicking this object move 2 units left on the world X axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Left * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Right
static SVector Right get
Equivalent of new SVector(1,0,0)
- Lua
right = Vector.Right
- Lua
--this script will make clicking this object move 2 units right on the world X axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Right * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Forward
static SVector Forward get
Equivalent of new SVector(0,0,1)
- Lua
forward = Vector.Forward
- Lua
--this script will make clicking this object move 2 units Forward on the world Z axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Forward * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Back
static SVector Back get
Equivalent of new SVector(0,0,-1)
- Lua
back = Vector.Back
- Lua
--this script will make clicking this object move 2 units Back on the world Z axis
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = thisObject.WorldPosition + (Vector.Back * 2)
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
Zero
static SVector Zero get
Equivalent of new SVector(0,0,0)
- Lua
vectorZero = Vector.Zero
- Lua
--clicking this object move it to the center of the region <0,0,0>
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = Vector.Zero
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
One
static SVector One get
Equivalent of new SVector(1,1,1)
- Lua
vectorOne = Vector.One
- Lua
--clicking this object move it to the <1,1,1> coordinates of the region.
thisObject = Space.Host.ExecutingObject
OnClick = function()
thisObject.WorldPosition = Vector.One
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClick)
MaxValue
static SVector MaxValue get
Contains the largest possible vector [3.402823E+38, 3.402823E+38, 3.402823E+38]
- Lua
vectorMaxValue = Vector.MaxValue
MinValue
static SVector MinValue get
Contains the largest possible negative vector
- Lua
vectorMinValue = Vector.MinValue