Tilt Five™ Unity API  1.3.0
 
Loading...
Searching...
No Matches
TiltFive.Glasses.BaseGlassesCore Class Reference
Inheritance diagram for TiltFive.Glasses.BaseGlassesCore:
TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose > TiltFive.Glasses.GlassesCore TiltFive.Glasses.GlassesPreviewCore

Public Member Functions

 BaseGlassesCore (GlassesHandle glassesHandle, T5_GlassesPoseUsage glassesPoseUsage, string name)
 
virtual void Dispose ()
 

Public Attributes

GlassesHandle glassesHandle
 
GameObject headPoseRoot
 

Protected Member Functions

override void Update (GlassesSettings glassesSettings, ScaleSettings scaleSettings, GameBoardSettings gameBoardSettings)
 Updates this T:TiltFive.Glasses.BaseGlassesCore
 
override void SetDefaultPoseGameboardSpace (GlassesSettings settings)
 
override void SetPoseUnityWorldSpace (ScaleSettings scaleSettings, GameBoardSettings gameBoardSettings)
 Sets the pose values of the tracked object in Unity World Space.
 
override bool TryCheckConnected (out bool connected)
 Determines whether the tracked object is still connected.
 
override bool TryGetStateFromPlugin (out T5_GlassesPose glassesPose, out bool poseIsValid, GameBoardSettings gameBoardSettings)
 
override void SetPoseGameboardSpace (in T5_GlassesPose glassesPose, GlassesSettings glassesSettings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
override void SetInvalidPoseGameboardSpace (in T5_GlassesPose glassesPose, GlassesSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
override void SetDrivenObjectTransform (GlassesSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameBoardSettings)
 
- Protected Member Functions inherited from TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >
void Reset (TSettings settings)
 
virtual void Update (TSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
abstract void SetDefaultPoseGameboardSpace (TSettings settings)
 Gets the default pose of the tracked object.
 
abstract void SetPoseGameboardSpace (in TState state, TSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 Sets the pose values of the tracked object in Unity World Space.
 
abstract void SetInvalidPoseGameboardSpace (in TState state, TSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 Sets the pose values of the tracked object in Unity World Space when we already know the pose is invalid.
 
abstract void SetPoseUnityWorldSpace (ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 Sets the pose values of the tracked object in Unity World Space.
 
abstract bool TryCheckConnected (out bool connected)
 Determines whether the tracked object is still connected.
 
abstract bool TryGetStateFromPlugin (out TState state, out bool poseIsValid, GameBoardSettings gameboardSettings)
 Gets the latest pose for the tracked object from the native plugin.
 
abstract void SetDrivenObjectTransform (TSettings settings, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 Sets the pose of the object(s) being driven by TrackableCore.
 

Properties

Transform headPose [get]
 
- Properties inherited from TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >
Pose Pose_GameboardSpace [get]
 The pose of the trackable w.r.t. the gameboard reference frame.
 
Pose Pose_UnityWorldSpace [get]
 The Pose of the trackable in Unity world space.
 
bool IsTracked [get]
 Whether or not the trackable is being tracked.
 
bool IsConnected [get]
 Whether or not the trackable is connected.
 

Private Member Functions

Pose GetPoseGameboardSpace (T5_GlassesPose glassesPose)
 

Private Attributes

T5_GlassesPoseUsage glassesPoseUsage
 
readonly Vector3 DEFAULT_GLASSES_POSITION_GAME_BOARD_SPACE = new Vector3(0f, 0.5f, -0.5f)
 The default position of the glasses relative to the board.
 
readonly Quaternion DEFAULT_GLASSES_ROTATION_GAME_BOARD_SPACE = Quaternion.Euler(new Vector3(-45f, 0f, 0f))
 The default rotation of the glasses relative to the board.
 

Additional Inherited Members

- Static Protected Member Functions inherited from TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >
static Vector3 ConvertPosGBDToUGBD (Vector3 pos_GBD)
 
static Pose GameboardToWorldSpace (Pose pose_GameboardSpace, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
static Vector3 GameboardToWorldSpace (Vector3 pos_UGBD, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
static Quaternion GameboardToWorldSpace (Quaternion rotToUGBD_OBJ, GameBoardSettings gameboardSettings)
 
static Vector3 WorldToGameboardSpace (Vector3 pos_UWRLD, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)
 
static Quaternion WorldToGameboardSpace (Quaternion rotToUWRLD_OBJ, GameBoardSettings gameboardSettings)
 
- Protected Attributes inherited from TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >
Pose pose_UGBD
 
Pose pose_UWRLD
 
bool isTracked
 
bool isConnected
 
Pose gameboardPos_UWRLD
 The pose of the gameboard reference frame w.r.t. the Unity world-space reference frame.
 

Detailed Description

Definition at line 575 of file Glasses.cs.

Constructor & Destructor Documentation

◆ BaseGlassesCore()

TiltFive.Glasses.BaseGlassesCore.BaseGlassesCore ( GlassesHandle  glassesHandle,
T5_GlassesPoseUsage  glassesPoseUsage,
string  name 
)

Definition at line 602 of file Glasses.cs.

606 {
607 this.glassesHandle = glassesHandle;
608 this.glassesPoseUsage = glassesPoseUsage;
609 headPoseRoot = new GameObject(name);
610 }
T5_GlassesPoseUsage glassesPoseUsage
Definition: Glasses.cs:582

Member Function Documentation

◆ Dispose()

virtual void TiltFive.Glasses.BaseGlassesCore.Dispose ( )
virtual

Reimplemented in TiltFive.Glasses.GlassesCore.

Definition at line 612 of file Glasses.cs.

613 {
614 GameObject.Destroy(headPoseRoot);
615 }

Referenced by TiltFive.Glasses.GlassesCore.Dispose().

◆ GetPoseGameboardSpace()

Pose TiltFive.Glasses.BaseGlassesCore.GetPoseGameboardSpace ( T5_GlassesPose  glassesPose)
private

Definition at line 759 of file Glasses.cs.

760 {
761 // Unity reference frames:
762 //
763 // UGLS - Unity GLaSses local space.
764 // +x right, +y up, +z forward
765 // UGBD - Unity Gameboard space.
766 // +x right, +y up, +z forward
767 //
768 // Tilt Five reference frames:
769 //
770 // DC - Our right-handed version of Unity's default camera space.
771 // +x right, +y up, +z backward
772 // GBD - Gameboard space.
773 // +x right, +y forward, +z up
774
775 Quaternion rotToDC_GBD = Quaternion.AngleAxis((-Mathf.PI / 2f) * Mathf.Rad2Deg, Vector3.right);
776
777 Quaternion rotToGBD_DC = Quaternion.Inverse(rotToDC_GBD);
778
779 Quaternion rotToGLS_GBD = glassesPose.RotationToGLS_GBD;
780
781 Quaternion rotToGLS_DC = rotToGLS_GBD * rotToGBD_DC;
782
783 Quaternion rotToUGBD_UGLS = new Quaternion(rotToGLS_DC.x, rotToGLS_DC.y, -rotToGLS_DC.z, rotToGLS_DC.w);
784
785 // Swap from right-handed (T5 internal) to left-handed (Unity) coord space.
786 Vector3 posOfUGLS_UGBD = ConvertPosGBDToUGBD(glassesPose.PosOfGLS_GBD);
787
788 return new Pose(posOfUGLS_UGBD, rotToUGBD_UGLS);
789 }
Quaternion RotationToGLS_GBD

References TiltFive.T5_GlassesPose.PosOfGLS_GBD, and TiltFive.T5_GlassesPose.RotationToGLS_GBD.

◆ SetDefaultPoseGameboardSpace()

override void TiltFive.Glasses.BaseGlassesCore.SetDefaultPoseGameboardSpace ( GlassesSettings  settings)
protected

Definition at line 632 of file Glasses.cs.

633 {
634 pose_UGBD = new Pose(
637 }
readonly Vector3 DEFAULT_GLASSES_POSITION_GAME_BOARD_SPACE
The default position of the glasses relative to the board.
Definition: Glasses.cs:591
readonly Quaternion DEFAULT_GLASSES_ROTATION_GAME_BOARD_SPACE
The default rotation of the glasses relative to the board.
Definition: Glasses.cs:600

◆ SetDrivenObjectTransform()

override void TiltFive.Glasses.BaseGlassesCore.SetDrivenObjectTransform ( GlassesSettings  settings,
ScaleSettings  scaleSettings,
GameBoardSettings  gameBoardSettings 
)
protected

Definition at line 724 of file Glasses.cs.

728 {
729 if (!isTracked && settings.RejectUntrackedPositionData)
730 {
731 switch (settings.FailureMode)
732 {
733 case TrackableSettings.TrackingFailureMode.FreezePosition:
734 headPose.SetPositionAndRotation(headPose.position, pose_UWRLD.rotation);
735 break;
736 // If we want to freeze both position and rotation when tracking is lost, things are easy - just do nothing.
737 case TrackableSettings.TrackingFailureMode.FreezePositionAndRotation:
738 break;
739 // Otherwise, we may want to keep the legacy behavior of snapping to a default position when tracking is lost.
740 case TrackableSettings.TrackingFailureMode.SnapToDefault:
741 // TODO: Rethink the existence of the preview pose? Is that a separate tracking failure mode?
742 if (settings.usePreviewPose)
743 {
744 headPose.SetPositionAndRotation(
745 settings.previewPose.position,
746 settings.previewPose.rotation);
747 }
748 // Otherwise do nothing and let the developer control the head pose camera themselves.
749 // It will be up to them to let go once head tracking kicks in again.
750 break;
751 }
752 }
753 else // Either things are working well and we're tracked, or we don't care about invalid data and want to display it regardless.
754 {
755 headPose.SetPositionAndRotation(pose_UWRLD.position, pose_UWRLD.rotation);
756 }
757 }
TrackingFailureMode FailureMode

References TiltFive.TrackableSettings.FailureMode, TiltFive.GlassesSettings.previewPose, TiltFive.TrackableSettings.RejectUntrackedPositionData, and TiltFive.GlassesSettings.usePreviewPose.

◆ SetInvalidPoseGameboardSpace()

override void TiltFive.Glasses.BaseGlassesCore.SetInvalidPoseGameboardSpace ( in T5_GlassesPose  glassesPose,
GlassesSettings  settings,
ScaleSettings  scaleSettings,
GameBoardSettings  gameboardSettings 
)
protected

Definition at line 687 of file Glasses.cs.

692 {
693 var newPose_GameboardSpace = GetPoseGameboardSpace(glassesPose);
694
695 if (!isTracked && settings.RejectUntrackedPositionData)
696 {
697 switch (settings.FailureMode)
698 {
699 case TrackableSettings.TrackingFailureMode.FreezePosition:
700 pose_UGBD = new Pose(pose_UGBD.position, newPose_GameboardSpace.rotation);
701 break;
702 // If we want to freeze both position and rotation when tracking is lost, things are easy - just do nothing.
703 case TrackableSettings.TrackingFailureMode.FreezePositionAndRotation:
704 break;
705 // Otherwise, we may want to keep the legacy behavior of snapping to a default position when tracking is lost.
706 case TrackableSettings.TrackingFailureMode.SnapToDefault:
707 // TODO: Rethink the existence of the preview pose? Is that a separate tracking failure mode?
708 if (settings.usePreviewPose)
709 {
710 pose_UGBD = new Pose(WorldToGameboardSpace(settings.previewPose.position, scaleSettings, gameboardSettings),
711 WorldToGameboardSpace(settings.previewPose.rotation, gameboardSettings));
712 }
713 // Otherwise do nothing and let the developer control the head pose camera themselves.
714 // It will be up to them to let go once head tracking kicks in again.
715 break;
716 }
717 }
718 else // Either things are working well and we're tracked, or we don't care about invalid data and want to display it regardless.
719 {
720 pose_UGBD = newPose_GameboardSpace;
721 }
722 }
Pose GetPoseGameboardSpace(T5_GlassesPose glassesPose)
Definition: Glasses.cs:759
static Vector3 WorldToGameboardSpace(Vector3 pos_UWRLD, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)

References TiltFive.TrackableSettings.FailureMode, TiltFive.GlassesSettings.previewPose, TiltFive.TrackableSettings.RejectUntrackedPositionData, and TiltFive.GlassesSettings.usePreviewPose.

◆ SetPoseGameboardSpace()

override void TiltFive.Glasses.BaseGlassesCore.SetPoseGameboardSpace ( in T5_GlassesPose  glassesPose,
GlassesSettings  glassesSettings,
ScaleSettings  scaleSettings,
GameBoardSettings  gameboardSettings 
)
protected

Definition at line 678 of file Glasses.cs.

683 {
684 pose_UGBD = GetPoseGameboardSpace(glassesPose);
685 }

◆ SetPoseUnityWorldSpace()

override void TiltFive.Glasses.BaseGlassesCore.SetPoseUnityWorldSpace ( ScaleSettings  scaleSettings,
GameBoardSettings  gameboardSettings 
)
protectedvirtual

Sets the pose values of the tracked object in Unity World Space.

Parameters
scaleSettings
gameboardSettings

Implements TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >.

Definition at line 639 of file Glasses.cs.

642 {
643 pose_UWRLD = GameboardToWorldSpace(pose_UGBD, scaleSettings, gameBoardSettings);
644 }
static Pose GameboardToWorldSpace(Pose pose_GameboardSpace, ScaleSettings scaleSettings, GameBoardSettings gameboardSettings)

◆ TryCheckConnected()

override bool TiltFive.Glasses.BaseGlassesCore.TryCheckConnected ( out bool  connected)
protectedvirtual

Determines whether the tracked object is still connected.

Parameters
connected
Returns

Implements TiltFive.TrackableCore< GlassesSettings, T5_GlassesPose >.

Definition at line 646 of file Glasses.cs.

647 {
648 connected = IsConnected(glassesHandle);
649 return connected;
650 }
bool IsConnected
Whether or not the trackable is connected.

◆ TryGetStateFromPlugin()

override bool TiltFive.Glasses.BaseGlassesCore.TryGetStateFromPlugin ( out T5_GlassesPose  glassesPose,
out bool  poseIsValid,
GameBoardSettings  gameBoardSettings 
)
protected

Definition at line 652 of file Glasses.cs.

656 {
657 T5_GlassesPose glassesPoseResult = new T5_GlassesPose { };
658
659 int result = 1;
660 try
661 {
664 ref glassesPoseResult,
666 }
667 catch (System.Exception e)
668 {
669 Log.Error(e.Message);
670 }
671
672 GameBoard.SetGameboardType(glassesHandle, glassesPoseResult.GameboardType);
673 poseIsValid = result == 0 && glassesPoseResult.GameboardType != GameboardType.GameboardType_None;
674 glassesPose = glassesPoseResult;
675 return result == 0;
676 }
Represents the game board.
Definition: GameBoard.cs:29
The Logger.
Definition: Log.cs:42
static void Error(string m, params object[] list)
ERROR logging function call.
Definition: Log.cs:127
static int GetGlassesPose(UInt64 glassesHandle, ref T5_GlassesPose glassesPose, [MarshalAs(UnmanagedType.I4)] T5_GlassesPoseUsage glassesPoseUsage)
GameboardType
The type of Gameboard being tracked by the glasses.
Headset pose information to be retrieved with NativePlugin.GetGlassesPose(ref T5_GlassesPose)
GameboardType GameboardType

References TiltFive.Logging.Log.Error(), TiltFive.T5_GlassesPose.GameboardType, and TiltFive.NativePlugin.GetGlassesPose().

◆ Update()

override void TiltFive.Glasses.BaseGlassesCore.Update ( GlassesSettings  glassesSettings,
ScaleSettings  scaleSettings,
GameBoardSettings  gameBoardSettings 
)
protected

Updates this T:TiltFive.Glasses.BaseGlassesCore

Parameters
glassesSettingsGlasses settings for the update.
scaleSettingsScale settings for the update.
gameBoardSettingsGameboard settings for the update.

Definition at line 623 of file Glasses.cs.

627 {
628 // Obtain the latest glasses pose.
629 base.Update(glassesSettings, scaleSettings, gameBoardSettings);
630 }

Member Data Documentation

◆ DEFAULT_GLASSES_POSITION_GAME_BOARD_SPACE

readonly Vector3 TiltFive.Glasses.BaseGlassesCore.DEFAULT_GLASSES_POSITION_GAME_BOARD_SPACE = new Vector3(0f, 0.5f, -0.5f)
private

The default position of the glasses relative to the board.

The glasses camera will snap back to this position if the glasses are unavailable. If different behavior is desired in this scenario, a different camera should be used.

Definition at line 591 of file Glasses.cs.

◆ DEFAULT_GLASSES_ROTATION_GAME_BOARD_SPACE

readonly Quaternion TiltFive.Glasses.BaseGlassesCore.DEFAULT_GLASSES_ROTATION_GAME_BOARD_SPACE = Quaternion.Euler(new Vector3(-45f, 0f, 0f))
private

The default rotation of the glasses relative to the board.

The glasses camera will snap back to this rotation if the glasses are unavailable. If different behavior is desired in this scenario, a different camera should be used.

Definition at line 600 of file Glasses.cs.

◆ glassesHandle

GlassesHandle TiltFive.Glasses.BaseGlassesCore.glassesHandle

Definition at line 577 of file Glasses.cs.

◆ glassesPoseUsage

T5_GlassesPoseUsage TiltFive.Glasses.BaseGlassesCore.glassesPoseUsage
private

Definition at line 582 of file Glasses.cs.

◆ headPoseRoot

GameObject TiltFive.Glasses.BaseGlassesCore.headPoseRoot

Definition at line 579 of file Glasses.cs.

Property Documentation

◆ headPose

Transform TiltFive.Glasses.BaseGlassesCore.headPose
get

Definition at line 580 of file Glasses.cs.


The documentation for this class was generated from the following file: