/// <summary> Use this for initialization. </summary>
        void Create()
        {
            if (m_PhotoCaptureObject != null)
            {
                NRDebugger.Info("The NRPhotoCapture has already been created.");
                return;
            }

            // Create a PhotoCapture object
            NRPhotoCapture.CreateAsync(false, delegate(NRPhotoCapture captureObject)
            {
                m_CameraResolution = NRPhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First();

                if (captureObject != null)
                {
                    m_PhotoCaptureObject = captureObject;
                }
                else
                {
                    NRDebugger.Error("Can not get a captureObject.");
                }

                CameraParameters cameraParameters       = new CameraParameters();
                cameraParameters.cameraResolutionWidth  = m_CameraResolution.width;
                cameraParameters.cameraResolutionHeight = m_CameraResolution.height;
                cameraParameters.pixelFormat            = CapturePixelFormat.BGRA32;
                cameraParameters.blendMode = BlendMode.Blend;

                // Activate the camera
                m_PhotoCaptureObject.StartPhotoModeAsync(cameraParameters, delegate(NRPhotoCapture.PhotoCaptureResult result)
                {
                    NRDebugger.Info("Start PhotoMode Async");
                });
            });
        }
 /// <summary> Creates a new NRTrackableAccessor. </summary>
 /// <param name="target"> Target for the.</param>
 /// <returns> A NRTrackableAccessor. </returns>
 public static NRTrackableAccessor Create(NRTrackableBehaviour target)
 {
     if (target is NRTrackableImageBehaviour)
     {
         return(new NRImageTargetAccessor((NRTrackableImageBehaviour)target));
     }
     NRDebugger.Error(target.GetType().ToString() + "is not derived from NRTrackableImageBehaviour");
     return(null);
 }
 /// <summary> Closes this object. </summary>
 void Close()
 {
     if (m_PhotoCaptureObject == null)
     {
         NRDebugger.Error("The NRPhotoCapture has not been created.");
         return;
     }
     // Deactivate our camera
     m_PhotoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode);
 }
        /// <summary> Loads the matrix. </summary>
        /// <returns> The matrix. </returns>
        private static Material LoadMat()
        {
            string   text = "Assets/NRSDK/Emulator/Materials/DefaultTarget.mat";
            Material mat  = AssetDatabase.LoadAssetAtPath <Material>(text);

            if (mat == null)
            {
                NRDebugger.Error("Could not find reference material at " + text + " please reimport Unity package.");
            }
            return(mat);
        }
 /// <summary> Executes the 'stopped photo mode' action. </summary>
 /// <param name="result"> The result.</param>
 void OnStoppedPhotoMode(NRPhotoCapture.PhotoCaptureResult result)
 {
     if (m_PhotoCaptureObject == null)
     {
         NRDebugger.Error("The NRPhotoCapture has not been created.");
         return;
     }
     // Shutdown our photo capture resource
     m_PhotoCaptureObject.Dispose();
     m_PhotoCaptureObject = null;
 }
        /// <summary> Draw inspector graphical user interface. </summary>
        private void DrawInspectorGUI()
        {
            if (m_Database == null)
            {
                NRDebugger.Error("NRKernalSessionConfig.TrackingImageDatabase is null");
                return;
            }
            EditorGUI.BeginDisabledGroup(true);

            EditorGUILayout.Popup("Database", 0, new string[] { m_Database.name });

            EditorGUI.EndDisabledGroup();

            for (int i = 0; i < m_ImagesName.Length; i++)
            {
                m_ImagesName[i] = m_Database[i].Name;
            }

            m_SerializedObj.DatabaseIndex = EditorGUILayout.Popup("Image Target", m_SerializedObj.DatabaseIndex, m_ImagesName);
            if (m_SerializedObj.DatabaseIndex != m_PreSelectOption)
            {
                m_PreSelectOption = m_SerializedObj.DatabaseIndex;

                // todo logic
                m_SerializedObj.Width  = m_Database[m_SerializedObj.DatabaseIndex].Width;
                m_SerializedObj.Height = m_Database[m_SerializedObj.DatabaseIndex].Width;//Height;

                UpdateProperties(m_SerializedObj);
            }

            if (base.serializedObject.isEditingMultipleObjects)
            {
                m_SerializedObj.SerializedObject.ApplyModifiedPropertiesWithoutUndo();
                Object[] targetObjs = m_SerializedObj.SerializedObject.targetObjects;
                for (int i = 0; i < targetObjs.Length; i++)
                {
                    UpdateAppearance(m_SerializedObj);
                }
            }
            else
            {
                UpdateAppearance(m_SerializedObj);
            }

            EditorGUI.BeginDisabledGroup(true);

            EditorGUILayout.PropertyField(m_SerializedObj.WidthProperty, new GUIContent("Width"), new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(m_SerializedObj.HeightProperty, new GUIContent("Height"), new GUILayoutOption[0]);

            EditorGUI.EndDisabledGroup();
        }
 /// <summary> Tests create video capture. </summary>
 void CreateVideoCaptureTest()
 {
     NRVideoCapture.CreateAsync(false, delegate(NRVideoCapture videoCapture)
     {
         if (videoCapture != null)
         {
             m_VideoCapture = videoCapture;
         }
         else
         {
             NRDebugger.Error("Failed to create VideoCapture Instance!");
         }
     });
 }