/// <summary> /// Attempt to load maps from the alignment profile retrieved from the UserSettings /// fallback maps are used in the event that the maps cannot be loaded. /// The '_loadState' member of this instance is modified accordingly. /// </summary> public void LoadMaps() { AlignmentProfile profile = null; if (metaContext != null && metaContext.ContainsModule <AlignmentProfile>()) { profile = metaContext.Get <AlignmentProfile>(); } if (profile != null && profile.ProfileMapPathsValid(_MapsDir)) { string[] filenames = new[] { profile.MaskMapPathLeft, profile.MaskMapPathRight, profile.DistortionMapPathLeft, profile.DistortionMapPathRight }; for (int i = 0; i < 4; ++i) { var fileData = File.ReadAllBytes(_MapsDir + filenames[i]); //Important to get the right filtering if (!_fileAlignmentTextures[i]) { _fileAlignmentTextures[i] = new Texture2D(2, 2, TextureFormat.ARGB32, false); } _fileAlignmentTextures[i].hideFlags = HideFlags.HideAndDontSave; _fileAlignmentTextures[i].filterMode = FilterMode.Point; _fileAlignmentTextures[i].wrapMode = TextureWrapMode.Clamp; _fileAlignmentTextures[i].LoadImage(fileData); //..this will auto-resize the texture dimensions. } //Assign the file alignment textures to the correct variables _activeMaskMaps[0] = _fileAlignmentTextures[0]; _activeMaskMaps[1] = _fileAlignmentTextures[1]; _activeDistortionMaps[0] = _fileAlignmentTextures[2]; _activeDistortionMaps[1] = _fileAlignmentTextures[3]; _loadState = LoadState.HasLoadedFinal; } else { for (int i = 0; i < 2; ++i) { _activeDistortionMaps[i] = _fallbackDistortionMaps[i]; _activeMaskMaps[i] = _fallbackMaskMaps[i]; } //The purpose of the following is to put this instance into a state where it may // attempt to load maps again. //The user-aligned maps may not be available at this time because Unity is currently not playing. //Therefor the fallback maps may be used in place of them. _loadState = (metaContext == null) ? LoadState.HasLoadedProxy : LoadState.LoadFailed; } }
/// <summary> /// Attempts to load the camera positions from the alignment profile stored in the metacontext. /// </summary> private void _LoadCameraPositions() { if (LeftCamera != null && RightCamera != null) { AlignmentProfile profile = null; if (metaContext != null && metaContext.ContainsModule <AlignmentProfile>()) { profile = metaContext.Get <AlignmentProfile>(); } if (profile != null) { LeftCamera.localPosition = profile.EyePositionLeft; RightCamera.localPosition = profile.EyePositionRight; } else { LeftCamera.localPosition = _defaultLeftCameraPos; RightCamera.localPosition = _defaultRightCameraPos; } } }
/// <summary> /// Sets a flag to load the camera positions from the alignment profile provided in the parameter at a later time. /// </summary> /// <param name="newProfile">the profile</param> public void OnAlignmentUpdate(AlignmentProfile newProfile) { //This is a hack in order to load transformations at a later time during Unity's main thread of execution. _alignmentUpdateOccured = true; }
public void OnAlignmentUpdate(AlignmentProfile newProfile) { //Reset the load-state to load the new maps _loadState = LoadState.NotLoaded; }