示例#1
0
 public bool SelectViewer(IViewerParameters vp)
 {
     if (vp is CustomViewerParameters)
     {
         return(VuforiaWrapper.Instance.Device_SelectViewer(((CustomViewerParameters)vp).NativePtr) == 1);
     }
     if (vp is ViewerParameters)
     {
         return(VuforiaWrapper.Instance.Device_SelectViewer(((ViewerParameters)vp).NativePtr) == 1);
     }
     Debug.LogError("Internal error: ViewerDevice. Select didn't recognise the parameter");
     return(false);
 }
示例#2
0
 private void ResolveMembers()
 {
     if (this.mVuforiaBehaviour == null)
     {
         this.mVuforiaBehaviour = VuforiaARController.Instance;
     }
     if (this.mDigitalEyewearBehaviour == null)
     {
         this.mDigitalEyewearBehaviour = DigitalEyewearARController.Instance;
     }
     if (this.mDigitalEyewearBehaviour.GetEyewearType() == DigitalEyewearARController.EyewearType.VideoSeeThrough)
     {
         if (!this.mFrameWorkHasBeenSetExternally)
         {
             this.mStereoFramework = this.mDigitalEyewearBehaviour.GetStereoCameraConfig();
             if (!this.mViewerHasBeenSetExternally)
             {
                 this.mViewerParameters = Device.Instance.GetSelectedViewer();
             }
             if (this.mStereoFramework != DigitalEyewearARController.StereoFramework.Vuforia)
             {
                 this.mCentralAnchorPoint       = this.mDigitalEyewearBehaviour.CentralAnchorPoint;
                 this.mLeftCameraOfExternalSDK  = this.mDigitalEyewearBehaviour.PrimaryCamera;
                 this.mRightCameraOfExternalSDK = this.mDigitalEyewearBehaviour.SecondaryCamera;
             }
         }
     }
     else if (!this.mFrameWorkHasBeenSetExternally)
     {
         this.mStereoFramework = DigitalEyewearARController.StereoFramework.Vuforia;
         this.mDigitalEyewearBehaviour.SetCameraOffset(0.06f);
         this.mDigitalEyewearBehaviour.SetDistortionRendering(DistortionRenderingMode.SingleTexture);
         if (!this.mViewerHasBeenSetExternally)
         {
             this.mViewerParameters = null;
         }
     }
     if (this.mViewerParameters == null)
     {
         IViewerParametersList viewerList = Device.Instance.GetViewerList();
         if (viewerList != null)
         {
             this.mViewerParameters = viewerList.Get(0);
         }
     }
     if (this.mVideoBackgroundManager == null)
     {
         this.mVideoBackgroundManager = VideoBackgroundManager.Instance;
     }
 }
示例#3
0
 public void SetViewerParameters(IViewerParameters viewerParameters)
 {
     this.mViewerHasBeenSetExternally = true;
     this.mViewerParameters           = viewerParameters;
 }
        private void OnVuforiaInitialized()
        {
            this.CorrectCameraConfiguration();
            VuforiaManager.Instance.CentralAnchorPoint = this.mCentralAnchorPoint;
            VuforiaManager.Instance.ParentAnchorPoint  = this.mParentAnchorPoint;
            if (!VuforiaRuntimeUtilities.IsVuforiaEnabled())
            {
                return;
            }
            if (this.mEyewearType == DigitalEyewearARController.EyewearType.None || this.mEyewearType == DigitalEyewearARController.EyewearType.OpticalSeeThrough)
            {
                Device.Instance.SetViewerActive(false);
            }
            else if (this.mEyewearType == DigitalEyewearARController.EyewearType.VideoSeeThrough)
            {
                Device.Instance.SetViewerActive(false);
                if (this.mStereoFramework == DigitalEyewearARController.StereoFramework.Vuforia)
                {
                    if (this.mUseCustomViewer)
                    {
                        CustomViewerParameters customViewerParameters = new CustomViewerParameters(this.mCustomViewer.Version, this.mCustomViewer.Name, this.mCustomViewer.Manufacturer);
                        customViewerParameters.SetButtonType(this.mCustomViewer.ButtonType);
                        customViewerParameters.SetScreenToLensDistance(this.mCustomViewer.ScreenToLensDistance);
                        customViewerParameters.SetInterLensDistance(this.mCustomViewer.InterLensDistance);
                        customViewerParameters.SetTrayAlignment(this.mCustomViewer.TrayAlignment);
                        customViewerParameters.SetLensCentreToTrayDistance(this.mCustomViewer.LensCenterToTrayDistance);
                        customViewerParameters.AddDistortionCoefficient(this.mCustomViewer.DistortionCoefficients[0]);
                        customViewerParameters.AddDistortionCoefficient(this.mCustomViewer.DistortionCoefficients[1]);
                        customViewerParameters.SetFieldOfView(this.mCustomViewer.FieldOfView);
                        customViewerParameters.SetContainsMagnet(this.mCustomViewer.ContainsMagnet);
                        Device.Instance.SelectViewer(customViewerParameters);
                    }
                    else
                    {
                        IViewerParametersList viewerList = Device.Instance.GetViewerList();
                        if (viewerList != null)
                        {
                            IViewerParameters vp = viewerList.Get(this.mViewerName, this.mViewerManufacturer);
                            if (!Device.Instance.SelectViewer(vp))
                            {
                                Debug.LogWarning("Couldn't select viewer " + this.mViewerName);
                            }
                        }
                        else
                        {
                            Debug.LogWarning("Couldn't select viewer " + this.mViewerName + "(no viewer available)");
                        }
                    }
                }
                else
                {
                    string text = "";
                    if (this.mStereoFramework == DigitalEyewearARController.StereoFramework.GearVR)
                    {
                        text = "GEARVR";
                    }
                    else if (this.mStereoFramework == DigitalEyewearARController.StereoFramework.Cardboard)
                    {
                        text = "CARDBOARD";
                    }
                    IViewerParametersList viewerList2 = Device.Instance.GetViewerList();
                    if (viewerList2 != null)
                    {
                        viewerList2.SetSDKFilter(text);
                        if (viewerList2.Size() > 0)
                        {
                            Device.Instance.SelectViewer(viewerList2.Get(0));
                        }
                        else
                        {
                            Debug.LogWarning(text + " is not supported");
                        }
                    }
                }
                Device.Instance.SetViewerActive(true);
            }
            StateManagerImpl stateManagerImpl = (StateManagerImpl)TrackerManager.Instance.GetStateManager();

            if (this.mEyewearType == DigitalEyewearARController.EyewearType.OpticalSeeThrough && this.mSeeThroughConfiguration == DigitalEyewearARController.SeeThroughConfiguration.HoloLens)
            {
                stateManagerImpl.SetExtendedTrackingManager(new HoloLensExtendedTrackingManager());
                if (Screen.orientation != ScreenOrientation.Landscape)
                {
                    Screen.autorotateToPortrait           = false;
                    Screen.autorotateToPortraitUpsideDown = false;
                    Screen.autorotateToLandscapeLeft      = false;
                    Screen.autorotateToLandscapeRight     = false;
                    Screen.orientation = ScreenOrientation.Landscape;
                    return;
                }
            }
            else
            {
                stateManagerImpl.SetExtendedTrackingManager(new VuforiaExtendedTrackingManager());
                this.mSetFocusPlaneAutomatically = false;
            }
        }
示例#5
0
        public override void DrawInspectorGUI()
        {
            EditorStyles.textField.wordWrap = false;
            List <string> list = new List <string>
            {
                "None",
                "Optical See-Through",
                "Video See-Through"
            };
            int num = EditorGUILayout.Popup("Eyewear Type", this.mEyewearType.enumValueIndex, list.ToArray(), new GUILayoutOption[0]);

            DigitalEyewearARController.EyewearType eyewearType = (DigitalEyewearARController.EyewearType)num;
            this.mEyewearType.enumValueIndex = num;
            if (eyewearType == DigitalEyewearARController.EyewearType.OpticalSeeThrough)
            {
                List <string> list2 = new List <string>
                {
                    "Vuforia",
                    "HoloLens"
                };
                int enumValueIndex  = this.mSeeThroughConfiguration.enumValueIndex;
                int enumValueIndex2 = EditorGUILayout.Popup("See Through Config", enumValueIndex, list2.ToArray(), new GUILayoutOption[0]);
                this.mSeeThroughConfiguration.enumValueIndex = enumValueIndex2;
                return;
            }
            if (eyewearType == DigitalEyewearARController.EyewearType.VideoSeeThrough)
            {
                List <string> list3 = new List <string>
                {
                    "Vuforia",
                    "Cardboard",
                    "Gear VR (Oculus)"
                };
                int  arg_F1_0  = this.mStereoFramework.intValue;
                int  num2      = EditorGUILayout.Popup("Stereo Camera Config", this.mStereoFramework.intValue, list3.ToArray(), new GUILayoutOption[0]);
                bool arg_125_0 = num2 != 0;
                this.mStereoFramework.intValue = num2;
                if (!arg_125_0)
                {
                    IViewerParameters[] viewerList = DigitalEyewearConfigurationEditor.GetViewerList();
                    List <string>       list4      = new List <string>();
                    IViewerParameters[] array      = viewerList;
                    for (int i = 0; i < array.Length; i++)
                    {
                        IViewerParameters viewerParameters = array[i];
                        list4.Add(DigitalEyewearConfigurationEditor.GetViewerIdentifier(viewerParameters.GetName(), viewerParameters.GetManufacturer()));
                    }
                    list4.Add("Custom");
                    int num3 = list4.IndexOf(DigitalEyewearConfigurationEditor.GetViewerIdentifier(this.mViewerName.stringValue, this.mViewerManufacturer.stringValue));
                    if (this.mUseCustomViewer.boolValue)
                    {
                        num3 = viewerList.Length;
                    }
                    else if (num3 < 0)
                    {
                        num3 = 0;
                    }
                    num3 = EditorGUILayout.Popup("Viewer Type", num3, list4.ToArray(), new GUILayoutOption[0]);
                    if (num3 >= viewerList.Length)
                    {
                        EditorGUI.indentLevel = EditorGUI.indentLevel + 1;
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("Name"), new GUIContent("Name"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("Manufacturer"), new GUIContent("Manufacturer"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("Version"), new GUIContent("Version"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("ButtonType"), new GUIContent("Button Type"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("ScreenToLensDistance"), new GUIContent("Screen To Lens Distance"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("InterLensDistance"), new GUIContent("Inter Lens Distance"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("TrayAlignment"), new GUIContent("Tray Alignment"), new GUILayoutOption[0]);
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("LensCenterToTrayDistance"), new GUIContent("Lens Center To Tray Distance"), new GUILayoutOption[0]);
                        EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]);
                        EditorGUIUtility.labelWidth = 60f;
                        EditorGUILayout.LabelField("Distortion Coefficients", new GUILayoutOption[0]);
                        EditorGUIUtility.labelWidth = 40f;
                        SerializedProperty serializedProperty = this.mCustomViewer.FindPropertyRelative("DistortionCoefficients");
                        float num4 = EditorGUILayout.FloatField("k1", serializedProperty.vector2Value.x, new GUILayoutOption[0]);
                        float num5 = EditorGUILayout.FloatField("k2", serializedProperty.vector2Value.y, new GUILayoutOption[0]);
                        serializedProperty.vector2Value = new Vector2(num4, num5);
                        EditorGUIUtility.labelWidth     = 0f;
                        EditorGUILayout.EndHorizontal();
                        EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]);
                        EditorGUIUtility.labelWidth = 60f;
                        EditorGUILayout.LabelField("Field Of View", new GUILayoutOption[0]);
                        SerializedProperty serializedProperty2 = this.mCustomViewer.FindPropertyRelative("FieldOfView");
                        float num6 = EditorGUILayout.FloatField(serializedProperty2.vector4Value.x, new GUILayoutOption[0]);
                        float num7 = EditorGUILayout.FloatField(serializedProperty2.vector4Value.y, new GUILayoutOption[0]);
                        float num8 = EditorGUILayout.FloatField(serializedProperty2.vector4Value.z, new GUILayoutOption[0]);
                        float num9 = EditorGUILayout.FloatField(serializedProperty2.vector4Value.w, new GUILayoutOption[0]);
                        serializedProperty2.vector4Value = new Vector4(num6, num7, num8, num9);
                        EditorGUIUtility.labelWidth      = 0f;
                        EditorGUILayout.EndHorizontal();
                        EditorGUILayout.PropertyField(this.mCustomViewer.FindPropertyRelative("ContainsMagnet"), new GUIContent("Contains Magnet"), new GUILayoutOption[0]);
                        EditorGUI.indentLevel           = EditorGUI.indentLevel - 1;
                        this.mUseCustomViewer.boolValue = true;
                    }
                    else
                    {
                        IViewerParameters viewerParameters2 = viewerList[num3];
                        this.mViewerName.stringValue         = viewerParameters2.GetName();
                        this.mViewerManufacturer.stringValue = viewerParameters2.GetManufacturer();
                        this.mUseCustomViewer.boolValue      = false;
                        EditorGUI.indentLevel = EditorGUI.indentLevel + 1;
                        DigitalEyewearConfigurationEditor.EditorLabel("Button Type", viewerParameters2.GetButtonType().ToString());
                        DigitalEyewearConfigurationEditor.EditorLabel("Screen To Lens Distance", viewerParameters2.GetScreenToLensDistance().ToString());
                        DigitalEyewearConfigurationEditor.EditorLabel("Inter Lens Distance", viewerParameters2.GetInterLensDistance().ToString());
                        DigitalEyewearConfigurationEditor.EditorLabel("Tray Alignment", viewerParameters2.GetTrayAlignment().ToString());
                        DigitalEyewearConfigurationEditor.EditorLabel("Lens Center To Tray Distance", viewerParameters2.GetLensCentreToTrayDistance().ToString());
                        int           numDistortionCoefficients = viewerParameters2.GetNumDistortionCoefficients();
                        StringBuilder stringBuilder             = new StringBuilder();
                        for (int j = 0; j < numDistortionCoefficients; j++)
                        {
                            stringBuilder.Append(viewerParameters2.GetDistortionCoefficient(j).ToString());
                            stringBuilder.Append("   ");
                        }
                        DigitalEyewearConfigurationEditor.EditorLabel("Distortion Coefficients", stringBuilder.ToString());
                        Vector4       fieldOfView    = viewerParameters2.GetFieldOfView();
                        StringBuilder stringBuilder2 = new StringBuilder();
                        for (int k = 0; k < 4; k++)
                        {
                            stringBuilder2.Append(fieldOfView[k]);
                            stringBuilder2.Append("   ");
                        }
                        DigitalEyewearConfigurationEditor.EditorLabel("Field Of View", stringBuilder2.ToString());
                        DigitalEyewearConfigurationEditor.EditorLabel("Contains Magnet", viewerParameters2.ContainsMagnet().ToString());
                        EditorGUI.indentLevel = EditorGUI.indentLevel - 1;
                    }
                    EditorGUILayout.Space();
                    EditorGUILayout.PropertyField(this.mDistortionRenderingMode, new GUIContent("Distortion Mode"), new GUILayoutOption[0]);
                    EditorGUILayout.PropertyField(this.mCameraOffset, new GUIContent("Camera Offset", "Set an IPD value for play mode and occluded stereo devices."), new GUILayoutOption[0]);
                }
            }
        }