//----------------------------------- end of public functions --------------------------------------// void Start() { try { // get sensor data KinectManager kinectManager = KinectManager.Instance; if (kinectManager && kinectManager.IsInitialized()) { sensorData = kinectManager.GetSensorData(); } if (sensorData == null || sensorData.sensorInterface == null) { throw new Exception("Face tracking cannot be started, because KinectManager is missing or not initialized."); } if (debugText != null) { debugText.GetComponent<GUIText>().text = "Please, wait..."; } // ensure the needed dlls are in place and face tracking is available for this interface bool bNeedRestart = false; if (sensorData.sensorInterface.IsFaceTrackingAvailable(ref bNeedRestart)) { if (bNeedRestart) { KinectInterop.RestartLevel(gameObject, "FM"); return; } } else { string sInterfaceName = sensorData.sensorInterface.GetType().Name; throw new Exception(sInterfaceName + ": Face tracking is not supported!"); } // Initialize the face tracker if (!sensorData.sensorInterface.InitFaceTracking(getFaceModelData, displayFaceRect)) { throw new Exception("Face tracking could not be initialized."); } instance = this; isFacetrackingInitialized = true; //DontDestroyOnLoad(gameObject); if (debugText != null) { debugText.GetComponent<GUIText>().text = "Ready."; } } catch (DllNotFoundException ex) { Debug.LogError(ex.ToString()); if (debugText != null) debugText.GetComponent<GUIText>().text = "Please check the Kinect and FT-Library installations."; } catch (Exception ex) { Debug.LogError(ex.ToString()); if (debugText != null) debugText.GetComponent<GUIText>().text = ex.Message; } }
void OnDestroy() { if (isFacetrackingInitialized && sensorData != null && sensorData.sensorInterface != null) { // finish face tracking sensorData.sensorInterface.FinishFaceTracking(); } // // clean up // Resources.UnloadUnusedAssets(); // GC.Collect(); isFacetrackingInitialized = false; instance = null; }