static void InitializePlatformSpecificTools()
        {
            Alt.Sketch.Config.Font_NoAntiAliasMaxSize = 5;

#if UNITY_5
            Alt.Backend.BackendManager.Clipboard = new UnityClipboard();

            UnityEngine.TextAsset bindata = UnityEngine.Resources.Load("AltData.zip", typeof(UnityEngine.TextAsset)) as UnityEngine.TextAsset;
            if (bindata != null)
            {
                System.IO.MemoryStream stream = new System.IO.MemoryStream(bindata.bytes);

                VirtualFileSystem.AddZipStorage(
                    "AltData.zip",
                    stream);
            }
#else
            VirtualFileSystem.AddZipStorage(
                "AltData.zip",
                VirtualFile.OpenRead("Assets/AltData.zip"));
#endif

            Alt.Sketch.Config.AppendLogo(Bitmap.FromFile("AltData/Logo/Unity.jpg"));

            UnityApplication.GetOrCreateInstance();
        }
Example #2
0
        /// <summary>
        /// <see cref="ICommand.Execute(UnityApplication)"/> implementation.
        /// </summary>
        public void Execute(UnityApplication application)
        {
            application.Logger.Debug("SetModelLayerVisibilityCommand.Execute()");

            var applicationArchiVR = application as ApplicationArchiVR;

            var layer = applicationArchiVR.GetLayers()[ModelLayerIndex];

            layer.SetActive(Visible);

            var layerName = layer.Name;

            // Update visibility of lights in the layer.
            foreach (var go in applicationArchiVR.LightEditData.GameObjects)
            {
                var light = go.GetComponent <ArchiVRLight>();

                if (light.LayerName == layerName)
                {
                    go.SetActive(Visible);
                }
            }

            // Update visibility of props in the layer.
            foreach (var go in applicationArchiVR.PropEditData.GameObjects)
            {
                var prop = go.GetComponent <ArchiVRProp>();

                if (prop.LayerName == layerName)
                {
                    go.SetActive(Visible);
                }
            }
        }
        /// <summary>
        /// <see cref="ICommand.Execute(UnityApplication)"/> implementation.
        /// </summary>
        public void Execute(UnityApplication application)
        {
            application.Logger.Debug("SetImmersionModeCommand.Execute()");

            var applicationArchiVR = application as ApplicationArchiVR;

            applicationArchiVR.SetActiveImmersionMode(ImmersionModeIndex);
        }
Example #4
0
        /// <summary>
        /// <see cref="ICommand.Execute(UnityApplication)"/> implementation.
        /// </summary>
        public void Execute(UnityApplication application)
        {
            application.Logger.Debug("SetModelLocationCommand.Execute()");

            var applicationStateScaleModel = application.ActiveApplicationState as ApplicationStateScaleModel;

            if (null != applicationStateScaleModel)
            {
                applicationStateScaleModel.SetModelLocation(PositionOffset, RotationOffset);
            }
        }
Example #5
0
 private void Quit()
 {
     UnityApplication.Quit();
 }
Example #6
0
    /// <summary>
    /// If an application instance is being initialized, and its appliction scene is fully loaded,
    /// performs the post-load operations to finalize the initialization.
    /// - Get handle to UnityApplication instance
    /// - Push the viewlayout to the application camera.
    /// - Start initialization of the next application instance.
    /// </summary>
    private IEnumerator InitializeApplicationInstances()
    {
        var tag = "EditorTestApplication.InitializeApplicationInstances()";

        _activeApplicationInstanceIndex = 0;

        for (int applicationInstanceBeingInitializedIndex = 0; applicationInstanceBeingInitializedIndex < DefaultNumApplicationInstances; ++applicationInstanceBeingInitializedIndex)
        {
            var loadApplicationSceneOperation = SceneManager.LoadSceneAsync(ApplicationSceneName, LoadSceneMode.Additive);

            while (!loadApplicationSceneOperation.isDone)
            {
                yield return(null);
            }

            var applicationSceneOrig = SceneManager.GetSceneByName(ApplicationSceneName);

            while (applicationSceneOrig == null)
            {
                yield return(null); // Application scene not loaded yet.

                applicationSceneOrig = SceneManager.GetSceneByName(ApplicationSceneName);
            }

            while (!applicationSceneOrig.isLoaded)
            {
                yield return(null); // Application scene not loaded yet.
            }

            var postFix = "(" + applicationInstanceBeingInitializedIndex + ")";

            // Since renaming a saved scene is not allowed,
            // we merge the loaded application scene into a uniquely named new scene(applicationScene).
            //
            // The originally loaded scene (applicationSceneOrig) will be destroyed automatically
            // by merging it into the final, uniquely named, application scene.
            var uniqueApplicationSceneName = applicationSceneOrig.name + postFix;

            var applicationScene = SceneManager.CreateScene(uniqueApplicationSceneName);
            SceneManager.MergeScenes(applicationSceneOrig, applicationScene);

            // First get the UnityApplication from the loaded application scene.
            UnityApplication applicationInstance = null;
            foreach (var go in applicationScene.GetRootGameObjects())
            {
                applicationInstance = UtilUnity.GetFirstComponentOfType <UnityApplication>(go);

                if (applicationInstance != null)
                {
                    break;
                }
            }

            if (applicationInstance == null)
            {
                throw new Exception(tag + "Loaded application scene does not contain a GameObject with a UnityApplication component!");
            }

            // Only enable input on the first application instance.
            applicationInstance.ID          = applicationInstanceBeingInitializedIndex;
            applicationInstance.EnableInput = (applicationInstanceBeingInitializedIndex == 0);

            ((ApplicationArchiVR)applicationInstance).EnvironmentalLighting.gameObject.SetActive(false);

            _applicationInstances.Add(applicationInstance);

            foreach (var go in applicationScene.GetRootGameObjects())
            {
                go.transform.position += applicationInstance.OffsetPerID;
            }

            applicationScenes.Add(applicationScene);

            var cameraGO = GameObject.Find("CenterEyeAnchor");

            if (cameraGO == null)
            {
                throw new Exception(tag + "GameObject 'CenterEyeAnchor' not found in application scene!");
            }

            cameraGO.name = cameraGO.name + postFix; // So it is not found anymore next time.

            var camera = cameraGO.GetComponent <Camera>();

            if (camera == null)
            {
                throw new Exception(tag + "GameObject 'CenterEyeAnchor' does not have a Camera component!");
            }

            camera.rect = WindowPlacements[_viewLayout][applicationInstanceBeingInitializedIndex];

            if (applicationInstanceBeingInitializedIndex == _activeApplicationInstanceIndex)
            {
                AttachBorderToView(applicationInstanceBeingInitializedIndex);
            }

            // Disable the default camera.
            GetDefaultCameraGO(applicationInstanceBeingInitializedIndex).SetActive(false);
        }

        // Now that all application scenes have been loaded, perform the startup logic on them.
        StartCoroutine(PerformStartupLogic());
    }
Example #7
0
        /// <summary>
        /// <see cref="ImmersionMode.UpdateTrackingSpacePosition()"/> implementation.
        /// </summary>
        public override void UpdateTrackingSpacePosition()
        {
            m_application.Logger.Debug("ApplicationStateWalkthrough.UpdateTrackingSpacePosition()");

            var activePOI = m_application.ActivePOI;

            if (activePOI == null)
            {
                m_application.ResetTrackingSpacePosition();

                UnityApplication.SetReferenceSystemLocation(
                    activePoiReferenceSystem,
                    Vector3.zero,
                    Quaternion.identity);

                m_application._teleportAreaGO.transform.position = Vector3.zero;
            }
            else
            {
                UnityApplication.SetReferenceSystemLocation(
                    activePoiReferenceSystem,
                    activePOI.transform.position,
                    activePOI.transform.rotation);

                m_application._teleportAreaGO.transform.position = activePOI.transform.position;

                if (m_application.ColocationEnabled)
                {
                    m_application.m_ovrCameraRig.transform.SetPositionAndRotation(
                        Vector3.zero,
                        Quaternion.identity);

                    var transformTRF = m_application.trackingSpace.gameObject.transform;
                    var transformSRF = m_application.SharedReferenceSystem.gameObject.transform;

                    var matrix_S_T = transformSRF.worldToLocalMatrix * transformTRF.localToWorldMatrix;
                    //var matrix_T_S = transformTRF.worldToLocalMatrix * transformSRF.localToWorldMatrix;

                    //var matrix_T_Si = matrix_S_T.inverse;
                    //var matrix_S_Ti = matrix_T_S.inverse;

                    var matrix_POI_W = activePOI.transform.localToWorldMatrix;

                    var matrix_result = matrix_POI_W * matrix_S_T;

                    m_application.m_ovrCameraRig.transform.FromMatrix(matrix_result);
                }
                else
                {
                    bool alignEyeToPOI = false;

                    if (alignEyeToPOI)
                    {
                        var rotTrackingSpace = m_application.m_ovrCameraRig.transform.rotation.eulerAngles;
                        var rotEye           = m_application.m_centerEyeCanvas.transform.parent.rotation.eulerAngles;

                        var rot = activePOI.transform.rotation.eulerAngles;

                        rot.y = rot.y + (rotTrackingSpace.y - rotEye.y);

                        m_application.m_ovrCameraRig.transform.SetPositionAndRotation(
                            activePOI.transform.position,
                            Quaternion.Euler(rot));
                    }
                    else
                    {
                        m_application.m_ovrCameraRig.transform.SetPositionAndRotation(
                            activePOI.transform.position,
                            activePOI.transform.rotation);
                    }
                }

                if (UnityEngine.Application.isEditor)
                {
                    m_application.m_ovrCameraRig.transform.position = m_application.m_ovrCameraRig.transform.position + new Vector3(0, 1.8f, 0);
                }
            }
        }
 UnityApplication()
 {
     m_Instance = this;
 }
 static void DoTick()
 {
     UnityApplication.DoEvents();
 }