CameraCharacter.ViewParameters GenerateViewParameterByStatus(Vector3?pos = null, Quaternion?rot = null, PanoramaBlock panoramaBlock = null) { CameraCharacter.ViewParameters ret = new CameraCharacter.ViewParameters(); switch (status) { case BlockCombinationStatus.Combine: ret.viewMode = CameraViewMode.HorizontalFreeView; ret.initialRotation = CameraCharacter.Singleton.fixedViewRotation; ret.cameraZOffset = 24f; break; case BlockCombinationStatus.CombineInsidePreview: ret.viewMode = CameraViewMode.HorizontalHalfFreeView; ret.initialRotation = CameraCharacter.Singleton.lookDownViewRotation; ret.cameraZOffset = 25f; ret.cameraScaleMode = CameraScaleMode.MoveCamera; break; case BlockCombinationStatus.Divide: ret.viewMode = CameraViewMode.FixedView; ret.cameraZOffset = 22f; ret.initialPosition = CameraCharacter.Singleton.fixedViewPosition; ret.initialRotation = CameraCharacter.Singleton.fixedViewRotation; break; case BlockCombinationStatus.FocusOnOneBlock: ret.viewMode = CameraViewMode.HorizontalHalfFreeView; ret.initialPosition = CameraCharacter.Singleton.lookDownViewPosition; ret.initialRotation = CameraCharacter.Singleton.lookDownViewRotation; ret.cameraZOffset = 18f; ret.cameraXOffset = 5f; ret.cameraScaleMode = CameraScaleMode.MoveCamera; break; case BlockCombinationStatus.Indoor: ret.viewMode = CameraViewMode.FreeView; ret.viewContentType = ViewContentType.PanoramaView; if (panoramaBlock != null) { ret.FadeInFlag = panoramaBlock.PanoramaContentReady; } ret.cameraZOffset = 0f; ret.initialPosition = pos; ret.initialRotation = rot; ret.cameraScaleMode = CameraScaleMode.ScaleFov; break; case BlockCombinationStatus.SpecialScene: break; default: break; } return(ret); }
public void EnterSpecialScene(string sceneName) { if (currentSpecialScene != null) { return; } foreach (var s in allSpecialScenes) { if (s == null) { continue; } if (s.specialSceneName == sceneName) { currentSpecialScene = s; break; } } if (currentSpecialScene == null) { return; } var ret = new CameraCharacter.ViewParameters(); ret.viewMode = currentSpecialScene.sceneViewMode; ret.viewContentType = currentSpecialScene.sceneViewContentType; ret.cameraZOffset = 0f; ret.initialPosition = currentSpecialScene.sceneViewCenter.position; ret.initialRotation = currentSpecialScene.sceneViewCenter.rotation; ret.forceFading = true; if (currentSpecialScene.sceneViewContentType == ViewContentType.PanoramaView && currentSpecialScene.viewContentDelegation != null) { currentSpecialScene.viewContentDelegation.DownloadAssetBundle(); ret.FadeInFlag = currentSpecialScene.viewContentDelegation.PanoramaContentReady; } statusBeforeSpecialScene = status; status = BlockCombinationStatus.SpecialScene; CameraCharacter.Singleton.PushView(ret, true); currentSpecialScene.OnEnterSpecialScene(); }