Example #1
0
    static void Update()
    {
        bool show =
            (!EditorPrefs.HasKey(ignore + buildTarget) &&
             EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) ||
            (!EditorPrefs.HasKey(ignore + defaultOrientation) &&
             PlayerSettings.defaultInterfaceOrientation != recommended_defaultOrientation) ||
            (!EditorPrefs.HasKey(ignore + enableMTRendering) &&
#if UNITY_2017_2_OR_NEWER
             PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android) != recommended_enableMTRendering) ||
#else
             PlayerSettings.mobileMTRendering != recommended_enableMTRendering) ||
#endif
            (!EditorPrefs.HasKey(ignore + graphicsJobs) &&
             PlayerSettings.graphicsJobs != recommended_graphicsJobs) ||
            (!EditorPrefs.HasKey(ignore + AndroidMinSDK) &&
             PlayerSettings.Android.minSdkVersion < recommended_AndroidMinSDK) ||
            (!EditorPrefs.HasKey(ignore + AndroidTargetSDK) &&
             PlayerSettings.Android.targetSdkVersion != recommended_AndroidTargetSDK) ||
            (!EditorPrefs.HasKey(ignore + gpuSkinning) &&
             PlayerSettings.gpuSkinning != recommended_GpuSkinning) ||
            forceShow;

        if (show)
        {
            window         = GetWindow <WaveVR_Settings>(true);
            window.minSize = new Vector2(640, 320);
        }
        EditorApplication.update -= Update;
    }
    void SinglePassPreProcess()
    {
        if (target != BuildTarget.Android)
        {
            Debug.LogError("Target platform is not Android");
            return;
        }

        var vrSupported = WaveVR_Settings.GetVirtualRealitySupported(BuildTargetGroup.Android);
        var list        = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android);
        var hasVRDevice = ArrayUtility.Contains <string>(list, WaveVR_Settings.WVRSinglePassDeviceName);

#if UNITY_2018_2_OR_NEWER
        // Please remove old name
        if (ArrayUtility.Contains <string>(list, "split"))
        {
            Debug.LogError("Contains old VR device name in XR settings.\nPlease remove it.");
        }
#endif
        var           stereoRenderingPath = PlayerSettings.stereoRenderingPath;
        List <string> allDefines          = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android);
        var           hasDefine           = allDefines.Contains(WaveVR_Settings.WVRSPDEF);

        // if single pass enabled in PlayerSettings, set the define.  Here is a final check.
        Debug.Log("SinglePassPreProcess: vrSupported=" + vrSupported + ", stereoRenderingPath=" + stereoRenderingPath +
                  ", hasVRDevice=" + hasVRDevice + ", hasDefine=" + hasDefine);
        var set = vrSupported && hasVRDevice && stereoRenderingPath == StereoRenderingPath.SinglePass;

        WaveVR_Settings.SetSinglePassDefine(group, set, allDefines);
    }
Example #3
0
    public static Item GetVRItem()
    {
        var message = "Enable VR and single-pass Support (Experimental)\n" +
                      "  This WVR feature is under development.  Use it at your own risk.\n" +
                      "  If you apply this item, it will help to:\n" +
                      "    1.Check VR Support, 2.Set Split screen device, \n" +
                      "    3.Set StereoRenderingPath as SinglePass, \n" +
                      "    4.Add " + WVRSPDEF + " to define symbols.";

        return(new Item(message, false.ToString())
        {
            IsReady = () => {
                var vrSupported = GetVirtualRealitySupported(BuildTargetGroup.Android);
                var list = GetVirtualRealitySDKs(BuildTargetGroup.Android);
                var stereoRenderingPath = PlayerSettings.stereoRenderingPath;

                List <string> allDefines = GetDefineSymbols(BuildTargetGroup.Android);
                var symbolDefined = allDefines.Contains(WVRSPDEF);

                return vrSupported && ArrayUtility.Contains <string>(list, "split") && stereoRenderingPath == StereoRenderingPath.SinglePass && symbolDefined;
            },
            GetCurrent = () =>
            {
                var vrSupported = GetVirtualRealitySupported(BuildTargetGroup.Android);
                var list = GetVirtualRealitySDKs(BuildTargetGroup.Android);
                var stereoRenderingPath = PlayerSettings.stereoRenderingPath;

                return (vrSupported && ArrayUtility.Contains <string>(list, "split") && stereoRenderingPath == StereoRenderingPath.SinglePass).ToString();
            },
            Set = () => {
                SetVirtualRealitySupported(BuildTargetGroup.Android, true);
                var list = GetVirtualRealitySDKs(BuildTargetGroup.Android);
                if (!ArrayUtility.Contains <string>(list, "split"))
                {
                    ArrayUtility.Insert <string>(ref list, 0, "split");
                }
                SetVirtualRealitySDKs(BuildTargetGroup.Android, list);
                PlayerSettings.stereoRenderingPath = StereoRenderingPath.SinglePass;

                List <string> allDefines = GetDefineSymbols(BuildTargetGroup.Android);
                WaveVR_Settings.SetSinglePassDefine(BuildTargetGroup.Android, true, allDefines);
            }
        });
    }
Example #4
0
    public static void UpdateInner(List <Item> items, bool forceShow)
    {
        bool show = forceShow;

        if (!forceShow)
        {
            foreach (var item in items)
            {
                show |= !item.IsIgnored && !item.IsReady();
            }
        }

        if (show)
        {
            window         = GetWindow <WaveVR_Settings>(true);
            window.minSize = new Vector2(640, 320);
            window.items   = items;
        }
    }
    void SinglePassPreProcess()
    {
        if (target != BuildTarget.Android)
        {
            Debug.LogError("Target platform is not Android");
            return;
        }

        var vrSupported         = WaveVR_Settings.GetVirtualRealitySupported(BuildTargetGroup.Android);
        var list                = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android);
        var hasSplit            = ArrayUtility.Contains <string>(list, "split");
        var stereoRenderingPath = PlayerSettings.stereoRenderingPath;

        List <string> allDefines = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android);
        var           hasDefine  = allDefines.Contains(WaveVR_Settings.WVRSPDEF);

        // if single pass enabled in PlayerSettings, set the define.  Here is a final check.
        Debug.Log("SinglePassPreProcess: vrSupported=" + vrSupported + ", stereoRenderingPath=" + stereoRenderingPath +
                  ", hasSplit=" + hasSplit + ", hasDefine=" + hasDefine);
        var set = vrSupported && hasSplit && stereoRenderingPath == StereoRenderingPath.SinglePass;

        WaveVR_Settings.SetSinglePassDefine(group, set, allDefines);
    }
Example #6
0
    static void ApplyVRTestAppPlayerSettings(bool isIL2CPP = false, bool isSupport32 = true, bool isSupport64 = false)
    {
        Debug.Log("ApplyVRTestAppPlayerSettings");

        GeneralSettings();

        if (!isSupport32 && !isSupport64)
        {
            isSupport32 = true;
        }

        PlayerSettings.productName = "VRTestApp";

#if UNITY_5_6_OR_NEWER
        PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, "com.vrm.unity.VRTestApp");
#else
        PlayerSettings.bundleIdentifier = "com.vrm.unity.VRTestApp";
#endif
        Texture2D icon = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Samples/VRTestApp/Textures/test.png", typeof(Texture2D));
        if (icon == null)
        {
            Debug.LogError("Fail to read app icon");
        }

        Texture2D[] group = { icon, icon, icon, icon, icon, icon };

        PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, group);
        PlayerSettings.gpuSkinning = false;
#if UNITY_2017_2_OR_NEWER
        PlayerSettings.SetMobileMTRendering(BuildTargetGroup.Android, true);
#else
        PlayerSettings.mobileMTRendering = true;
#endif
        PlayerSettings.graphicsJobs = true;

        // This can help check the Settings by text editor
        EditorSettings.serializationMode = SerializationMode.ForceText;

        // Enable VR support and singlepass
        WaveVR_Settings.SetVirtualRealitySupported(BuildTargetGroup.Android, true);
        var list = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android);
        if (!ArrayUtility.Contains <string>(list, WaveVR_Settings.WVRSinglePassDeviceName))
        {
            ArrayUtility.Insert <string>(ref list, 0, WaveVR_Settings.WVRSinglePassDeviceName);
        }
        WaveVR_Settings.SetVirtualRealitySDKs(BuildTargetGroup.Android, list);
        PlayerSettings.stereoRenderingPath = StereoRenderingPath.SinglePass;
        var symbols = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android);
        WaveVR_Settings.SetSinglePassDefine(BuildTargetGroup.Android, true, symbols);

        // Force use GLES31
        PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.Android, false);
        UnityEngine.Rendering.GraphicsDeviceType[] apis = { UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3 };
        PlayerSettings.SetGraphicsAPIs(BuildTarget.Android, apis);
        PlayerSettings.openGLRequireES31    = true;
        PlayerSettings.openGLRequireES31AEP = true;

        if (isIL2CPP)
        {
            PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
        }
        else
        {
            PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.Mono2x);
        }
        if (isSupport32)
        {
            if (isSupport64)
            {
                PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
            }
            else
            {
                PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7;
            }
        }
        else
        {
            PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARM64;
        }

        PlayerSettings.Android.minSdkVersion    = AndroidSdkVersions.AndroidApiLevel25;
        PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel26;

        AssetDatabase.SaveAssets();
    }