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(); }
/// <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); }
/// <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); } }
private void Quit() { UnityApplication.Quit(); }
/// <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()); }
/// <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(); }