Basics
		  	- Click Sign-up at the top of the page to register and access to the portal.
- In the portal, add your app through My Apps to recieve your API key. 
- Click the Windows Holographic icon under Toolkits(API) and download the package.
- Import into Unity, drag the Practical Manager prefab into your scene.
- Copy your API key from the portal.
- Paste in the API key field located in the inspector when Practical Manager is selected. 

            
Example Code:
              Drag PracticalGazeTracker.cs onto GameObjects you want to track through gaze.
The following methods can be used to track gaze:

// Communicates with inputmanager.cs to track when the user gazes on a GameObject.
// Reports HitObject.name and starts a stopwatch to track seconds of the HitObject being gazed.
public void OnFocusEnter()
{
   PracticalAPI.Instance.RecordGazeOn(HitObject.name);
}

// Communicates with inputmanager.cs to track when the user gazes off a GameObject.
// Ends the stopwatch and reports the seconds of the gaze length.
public void OnFocusExit()
{
   PracticalAPI.Instance.RecordGazeOff();
}
		
// This IncludeMapping() example uses the HoloToolkit script SpatialUnderstanding.cs

if((ScanState == ScanStates.Finishing) &&
   (scanDone) &&
   (!= null))
}
   // Final mesh import
   StartCoroutine(Understanding.Import_UnderstandingMesh());

   // Mark it
   ScanState = ScaneStates.Done;
   
   // Group all the Mapping object together to share one custom name "Mapping".
   PracticalAPI.Instance.IncludeMapping();
}


            
Example Code:
              // This RecordGesture() example uses the HoloToolkit script GestureInputs.cs
protected void OnTappedEvent(InteractionSourceKing source, int tapCount, Ray headRay)
{
   // Get the current Gaze's hit object
   var hitobj = GazeManager.Instance.HitObject;

   if (hitObj != null)
   {
      if (hitObj.layer == PracticalAPI.Instance.MappingPhysicsLayer)
      {
         PracticalAPI.Instance.RecordGesture("Mapping");
      }
      else
      {
         PracticalAPI.Instance.RecordGesture(hitObj.gameObject.name);
      }	
   }
   else
   {
        PracticalAPI.Instance.RecordGesture("No Hit");
   }
 }




// This RecordRecordHoldStarted() example uses the HoloToolkit script GestureInputs.cs
protected void OnHoldStartedEvent(InteractionSourceKind source,Ray headray)
{
   PracticalAPI.Instance.RecordHoldStarted();

   inputManager.RaiseHoldStarted(this, 0);
}




// This RecordHoldComplete() example uses the HoloToolkit script GestureInputs.cs
protected void OnHoldCompletedEvent(InteractionSourceKing source, int Ray headRay)
{
   // Get the current Gaze's hit object
   var hitobj = GazeManager.Instance.HitObject;

   // Send an OnSelect message to the focused object and it's ancestors.
   if (hitObj != null)
   {
      if (hitObj.layer == PracticalAPI.Instance.MappingPhysicsLayer)
      {
         PracticalAPI.Instance.RecordHoldComplete("Mapping");
      }
      else
      {
         PracticalAPI.Instance.RecordHoldComplete(hitObj.gameObject.name);
      }	
 }
else
{
   PracticalAPI.Instance.RecordHoldComplete("No Hit");
}
			  	
			  	

            
Example Code:
           // This example is the method being run once the keyword "Help" is spoken.
public void HelpKeyword()
{
   PracticalAPI.Instance.RecordKeyword("Help");
}

            
Example Code:
              // This example shows how to record a player gaining health.
PracticalAPI.Instance.RecordGain("HealthGained", 25);

// This example shoss how to record a player completing a wave.
PracticalAPI.Instance.RecordGain("WaveComplete", 1);

// This example shows how to record a player obtaining lives.
PracticalAPI.Instance.RecordGain("LivesGained", 5);

            
Example Code:
              // This example shows how to record a player losing health.
PracticalAPI.Instance.RecordLoss("HealthLoss", 1);

// This example shows how to record a player failing a wave.
PracticalAPI.Instance.RecordLoss("WaveFailed", 25);

// This example shows how to record a player losing a life.
PracticalAPI.Instance.RecordLoss("LifeLost", 1);

            
Example Code:
              // This example shows how to record a plyer completing a wave.
PracticalAPI.Instance.RecordCustomStat("WavesCompleted", 1);

// This example shows to record a user success streak.
PracticalAPI.Instance.RecordCustomStat("Combo", 1, Measurement.Count, Formula.Total);

// This example shows how to record the average of seconds remaining of a timed event.
PracticalAPI.Instance.RecordCustomStat("SecondsRemaining", 32, Measurement.Count, Formula.Average);

            
^