LogoLogo
Scripting DocsSupport
Scripting
Scripting
  • Sinespace Scripting Documentation
  • Client Scripting
    • Viewer
      • SDialogues
      • SInput
      • SShared
      • SUI
    • Network
      • SChat
      • SNetwork
      • SPhotos
      • SVideos
      • SWebService
    • Player
      • SEconomy
      • SGroup
      • SInventory
      • SProfile
      • SQuests
    • Region
      • SCameraManager
      • SGrid
      • SHost
      • SPersistence
      • SPhysics
      • SPostFX
      • SScene
      • SScript
      • SRenderSettings
    • Components
      • SAnimation
      • SAnimator
      • SAudioReactiveAnimation
      • SAudioReactiveBase
      • SAudioReactiveLight
      • SAudioReactiveMaterial
      • SAudioReactiveParticleSystem
      • SAudioReactiveTransform
      • SAudioSource
      • SBoxCollider
      • SBrowserSurface
      • SCamera
      • SCanvasGroup
      • SCapsuleCollider
      • SCharacterController
      • SClickable
      • SCloth
      • SCollider
      • SContentSizeFitter
      • SEmbeddedVideo
      • SEventCalendar
      • SFurniture
      • SGraphicRaycaster
      • SHingeJoint
      • SLight
      • SLineRenderer
      • SMeshRenderer
      • SModularVehicle
      • SNavMeshAgent
      • SNavMeshObstacle
      • SNetworking
      • SParticleSystem
      • SPlayableDirector
      • SPostProcessVolume
      • SRectTransform
      • SReflectionProbe
      • SRenderer
      • SRigidbody
      • SRoomFloor
      • SSceneBackgroundMusic
      • SScriptingData
      • SScriptingEvents
      • SScriptingResources
      • SScriptingRuntime
      • SSeat
      • SSkinnedMeshRenderer
      • SSphereCollider
      • SStateMachine
      • STerrain
      • STrailRenderer
      • SUIButton
      • SUICanvas
      • SUIDropdown
      • SUIImage
      • SUIInputField
      • SUILayout
      • SUIRawImage
      • SUIScrollbar
      • SUISlider
      • SUIText
      • SUIToggle
      • SUIToolTipHint
      • SVirtualCamera
      • SVoiceZone
    • Types
      • SAnimationState
      • SAnimatorStateInfo
      • SAvatar
      • SAvatarAppearance
      • SChatMessage
      • SColor
      • SCommandBuffer
      • SDateTime
      • SGameObject
      • SGenre
      • SGroupInfo
      • SInventoryItem
      • SJointLimits
      • SJointMotor
      • SJointSpring
      • SLandmark
      • SLayerMask
      • SMaterial
      • SMath
      • SMusicDirectory
      • SMusicStation
      • SMusicStationList
      • SNetworkMessageLua
      • SOutfit
      • SParticle
      • SPhysicsHit
      • SPublicRegion
      • SQuaternion
      • SRay
      • SRect
      • SResource
      • SScore
      • SScoreRank
      • SString
      • SSubRegion
      • STrackInfo
      • STuneIn
      • SUIRaycastResult
      • SUserRegions
      • SVector
      • SUserProfile
      • SSocialMedia
      • SWebResponse
  • Server Scripting
    • Library
      • SMath
    • Network
      • SShared
      • SWebservice
    • Region
      • SAvatar
      • SCell
      • SObject
      • SParcel
      • SParcelManager
      • SRegionScript
      • SScene
    • Storage
      • SDatabase
  • Guides
    • Persistence
    • Server Scripts
  • Sample Projects
    • Smart Lights
    • Trivia Box
  • Changelog
    • API Changelog
  • Support
    • Report An Issue
Powered by GitBook

Sinespace® is a registered trademark of Sine Wave Entertainment Ltd, All Rights Reserved.

On this page
  • Index
  • Functions Index
  • Properties Index
  • Functions
  • ToString
  • Angle
  • Lerp
  • Slerp
  • RotateTowards
  • Dot
  • Equals
  • New
  • Euler
  • AngleAxis
  • LookRotation
  • operator*
  • FromToRotation
  • Properties
  • X
  • Y
  • Z
  • W
  • EulerAngles
  • Inverse
  • Identity

Was this helpful?

Export as PDF
  1. Client Scripting
  2. Types

SQuaternion

Index

Functions Index

Function

Static Functions

static SQuaternion FromToRotation (SVector a, SVector b)

Properties Index

Property

Static Properties

Functions

ToString

string ToString ()

Converts a quaternion to a human readable string

aQuaternion = Quaternion.New(0.0, 1.0, 0.0, 0.0)
theString = aQuaternion.ToString()

Angle

float Angle (SQuaternion b)

Returns the angle between two quaternions

Parameter
Type
Description

local newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707);
local otherQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0);
angle = newQuat.Angle(otherQuat);

Space.Log(angle);
-- prints 90.0173034667969

Lerp

SQuaternion Lerp (SQuaternion b, float t)

Linearly interpolates between this and other quaternion, by factor t and returns the result

Parameter
Type
Description

QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
QuatLerpAB = QuatA.Lerp(QuatB, Space.Time * 0.1)
local cube = Space.Host.ExecutingObject

local fromQuat = cube.LocalRotation
local toQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
local speed = 0.1

-- The cube will rotate 90 degrees from current rotation by speed amount.
local moveCube = function()
  cube.LocalRotation = fromQuat.Lerp(toQuat, Space.Time * speed);
end

cube.OnUpdate(moveCube)

Slerp

SQuaternion Slerp (SQuaternion b, float t)

Spherically interpolates between this and other quaternion, by factor t and returns the result

Parameter
Type
Description

QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
QuatLerpAB = QuatA.Slerp(QuatB, Space.Time * 0.1)
local cube = Space.Host.ExecutingObject;

local fromQuat = cube.LocalRotation;
local toQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0);
local speed = 0.1;

-- The cube will rotate 180 degrees from current rotation by speed amount.
local moveCube = function()
  cube.LocalRotation = fromQuat.Slerp(toQuat, Space.Time * speed)
end

cube.OnUpdate(moveCube)

RotateTowards

SQuaternion RotateTowards (SQuaternion b, float delta)

Rotates this towards other, by no more than t degrees

Parameter
Type
Description

QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
ARotatedTowardB = QuatA.RotateTowards(QuatB, Space.Time * 0.1)
local cube = Space.Host.ExecutingObject

local fromQuat = cube.LocalRotation
local target = Quaternion.New(0.0, 0.707, 0.0, 0.707)
local speed = 10.0

-- The cube will rotate 90 degrees from current rotation by step amount.
local moveCube = function()
  local step = speed * Space.Time
  cube.LocalRotation = fromQuat.RotateTowards(target, step)
end

cube.OnUpdate(moveCube)

Dot

float Dot (SQuaternion b)

Returns the dot product of this and another quaternion

Parameter
Type
Description

local quat = Quaternion.New(0.0, 0.707, 0.0, 0.707);
local quatOther = Quaternion.New(0.0, 0.0, 0.0, 1.0);
Space.Log(quat.Dot(quatOther));
-- prints 0.707000017166138

Equals

bool Equals (SQuaternion other)

Function Description

Parameter
Type
Description

other

SQuaternion

The other Quaternion that we are comparing with.

QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
isEqual = QuatA.Equals(QuatB)

New

static SQuaternion New (float x, float y, float z, float w)

Creates a new Quaternion

Parameter
Type
Description

newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)

Euler

static SQuaternion Euler (float x, float y, float z)

Creates a quaternion using Euler angles.

Parameter
Type
Description

newQuat = Quaternion.Euler(0.0, 90.0, 0.0)

AngleAxis

Creates a quaternion from an Angle/Axis pair

Parameter
Type
Description

newVector = Vector.New(0.0, 90.0, 0.0)
newQuat = Quaternion.AngleAxis(newVector, 90.0)

LookRotation

Creates a quaternion a forward vector; presuming up is (0,1,0)

Parameter
Type
Description

local newQuat = Quaternion.LookRotation(Vector.Forward);
-- or
local newQuat = Quaternion.LookRotation(Vector.Forward, Vector.Up);

operator*

The result of using the * operator.

Parameter
Type
Description

newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newVector = Vector.Forward
rotatedVector = newQuat * newVector

--or

newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
newVector = Vector.New(0.0, 0.0, 0.0)
rotatedVector = newQuat * newQuat

FromToRotation

static SQuaternion FromToRotation (SVector a, SVector b)

Creates a rotation which rotates from a to b.

Usually you use this to rotate a transform so that one of its axes eg. the y-axis - follows a target direction b in world space.

Parameter
Type
Description

VectorA = Vector.New(0.0,1.0,0.0)
VectorB = Vector.New(1.0,0.0,0.0)
QuaternionFromToRotation = Quaternion.FromToRotation(VectorA, VectorB)

Properties

X

float X get set

X axis

newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.X = 40.0
obj = Space.Host.ExecutingObject
originalRot = obj.LocalRotation

onStartMethod = function()
  Space.Log(originalRot.x)
  -- prints the X component of this object as a float

  originalRot.x = 0.25
  -- assigns 0.25 value to the X component

  obj.LocalRotation = originalRot
  -- sets the the new rotation
end

obj.OnStart(onStartMethod)

Y

float Y get set

Y axis

newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Y = 40.0
 obj = Space.Host.ExecutingObject
 originalRot = obj.LocalRotation

 onStartMethod = function()
  Space.Log(originalRot.y);
  -- prints the Y component of this object as a float

  originalRot.y = 0.25;
  -- assigns 0.25 value to the Y component

  obj.LocalRotation = originalRot;
  -- sets the the new rotation
end

obj.OnStart(onStartMethod);

Z

float Z get set

Z axis

newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Z = 40.0
local obj = Space.Host.ExecutingObject;
local originalRot = obj.LocalRotation;
obj.SubscribeToEvents();

local onStartMethod = function()
  Space.Log(originalRot.z);
  -- prints the Z component of this object as a float

  originalRot.z = 0.25;
  -- assigns 0.25 value to the Z component

  obj.LocalRotation = originalRot;
  -- sets the the new rotation
end

obj.OnStart(onStartMethod);

W

float W get set

W axis

newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.W = 40.0
local obj = Space.Host.ExecutingObject;
local originalRot = obj.LocalRotation;
obj.SubscribeToEvents();

local onStartMethod = function()
  Space.Log(originalRot.w);
  -- prints the W component of this object as a float

  originalRot.w = 0.25;
  -- assigns 0.25 value to the W component

  obj.LocalRotation = originalRot;
  -- sets the the new rotation
end

obj.OnStart(onStartMethod);

EulerAngles

Returns the Euler rotation for this Quaternion

newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
euler = newQuat.EulerAngles

Inverse

SQuaternion Inverse get

Returns the inverse of this quaternion

quat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
inverseQuat = quat.Inverse

Identity

static SQuaternion Identity get

Equivalent of new SQuaternion(0,0,0,1)

identity = Quaternion.Identity
PreviousSPublicRegionNextSRay

Last updated 2 years ago

Was this helpful?

string ()

float (SQuaternion b)

SQuaternion (SQuaternion b, float t)

SQuaternion (SQuaternion b, float t)

SQuaternion (SQuaternion b, float delta)

float (SQuaternion b)

bool (SQuaternion other)

static SQuaternion (float x, float y, float z, float w)

static SQuaternion (float x, float y, float z)

static SQuaternion (SVector axis, float angle)

static SQuaternion (SVector forward) static SQuaternion (SVector forward, SVector up)

static SVector (SQuaternion a, SVector b) static SQuaternion (SQuaternion a, SQuaternion b)

float get set

float get set

float get set

float get set

SVector get

SQuaternion get

static SQuaternion get

static SQuaternion AngleAxis ( axis, float angle)

static SQuaternion LookRotation ( forward) static SQuaternion LookRotation ( forward, up)

static operator* (SQuaternion a, b) static SQuaternion operator* (SQuaternion a, SQuaternion b)

EulerAngles get

SVector
SVector
SVector
SVector
SVector
SVector
SVector
ToString
Angle
Lerp
Slerp
RotateTowards
Dot
Equals
New
Euler
AngleAxis
LookRotation
LookRotation
operator
operator
X
Y
Z
W
EulerAngles
Inverse
Identity