コード例 #1
0
ファイル: ActionCamera.cs プロジェクト: IJkeB/Ekster1
        override public void Skip()
        {
            MainCamera mainCam = KickStarter.mainCamera;

            if (mainCam)
            {
                _Camera cam = linkedCamera;

                if (returnToLast && mainCam.lastNavCamera)
                {
                    if (mainCam.lastNavCamera != null && mainCam.attachedCamera == mainCam.lastNavCamera)
                    {
                        cam = (_Camera)mainCam.lastNavCamera2;
                    }
                    else
                    {
                        cam = (_Camera)mainCam.lastNavCamera;
                    }
                }

                if (cam)
                {
                    if (cam is GameCameraThirdPerson)
                    {
                        GameCameraThirdPerson tpCam = (GameCameraThirdPerson)cam;
                        tpCam.ResetRotation();
                    }

                    mainCam.SetGameCamera(cam);

                    cam.MoveCameraInstant();
                    mainCam.SnapToAttached();
                }
            }
        }
コード例 #2
0
        override public void Skip()
        {
            MainCamera mainCam = KickStarter.mainCamera;

            if (mainCam)
            {
                _Camera cam = linkedCamera;

                if (returnToLast)
                {
                    cam = mainCam.GetLastGameplayCamera();
                }

                if (cam)
                {
                    if (cam is GameCameraThirdPerson)
                    {
                        GameCameraThirdPerson tpCam = (GameCameraThirdPerson)cam;
                        tpCam.ResetRotation();
                    }

                    cam.MoveCameraInstant();
                    mainCam.SetGameCamera(cam);
                }
            }
        }
コード例 #3
0
ファイル: PlayerStart.cs プロジェクト: Keraunic-Tonic/GJ2021
 /**
  * Makes the assigned cameraOnStart the active _Camera.
  */
 public void SetCameraOnStart()
 {
     if (cameraOnStart && KickStarter.mainCamera)
     {
         cameraOnStart.MoveCameraInstant();
         KickStarter.mainCamera.SetGameCamera(cameraOnStart);
         KickStarter.mainCamera.lastNavCamera = cameraOnStart;
     }
 }
コード例 #4
0
 /**
  * Makes the assigned cameraOnStart the active _Camera.
  */
 public void SetCameraOnStart()
 {
     if (cameraOnStart != null && KickStarter.mainCamera != null)
     {
         KickStarter.mainCamera.SetGameCamera(cameraOnStart);
         KickStarter.mainCamera.lastNavCamera = cameraOnStart;
         cameraOnStart.MoveCameraInstant();
         KickStarter.mainCamera.SetGameCamera(cameraOnStart);
     }
 }
コード例 #5
0
        public override float Run()
        {
            if (!isRunning)
            {
                isRunning = true;
                MainCamera mainCam = KickStarter.mainCamera;

                if (runtimeLinkedCamera && mainCam.attachedCamera != runtimeLinkedCamera)
                {
                    if (runtimeLinkedCamera is GameCameraThirdPerson)
                    {
                        GameCameraThirdPerson tpCam = (GameCameraThirdPerson)runtimeLinkedCamera;
                        tpCam.ResetRotation();
                    }
                    else if (runtimeLinkedCamera is GameCameraAnimated)
                    {
                        GameCameraAnimated animCam = (GameCameraAnimated)runtimeLinkedCamera;
                        animCam.PlayClip();
                    }

                    runtimeLinkedCamera.MoveCameraInstant();
                    mainCam.Crossfade(transitionTime, runtimeLinkedCamera, fadeCurve);

                    if (transitionTime > 0f && willWait)
                    {
                        return(transitionTime);
                    }
                }
            }
            else
            {
                isRunning = false;
            }

            return(0f);
        }
コード例 #6
0
        public void SetPlayerStart()
        {
            if (KickStarter.mainCamera)
            {
                if (fadeInOnStart)
                {
                    KickStarter.mainCamera.FadeIn(fadeSpeed);
                }

                if (KickStarter.settingsManager)
                {
                    if (KickStarter.player)
                    {
                        KickStarter.player.Teleport(this.transform.position);
                        KickStarter.player.SetLookDirection(this.transform.forward, true);

                        if (KickStarter.settingsManager.ActInScreenSpace() && !KickStarter.settingsManager.IsUnity2D())
                        {
                            KickStarter.player.transform.position = AdvGame.GetScreenNavMesh(KickStarter.player.transform.position);
                        }
                    }

                    if (KickStarter.settingsManager.movementMethod == MovementMethod.FirstPerson)
                    {
                        KickStarter.mainCamera.SetFirstPerson();
                    }

                    else if (cameraOnStart)
                    {
                        KickStarter.mainCamera.SetGameCamera(cameraOnStart);
                        KickStarter.mainCamera.lastNavCamera = cameraOnStart;
                        cameraOnStart.MoveCameraInstant();
                        KickStarter.mainCamera.SetGameCamera(cameraOnStart);
                        KickStarter.mainCamera.SnapToAttached();
                    }

                    else if (cameraOnStart == null)
                    {
                        if (!KickStarter.settingsManager.IsInFirstPerson())
                        {
                            Debug.LogWarning(this.name + " has no Camera On Start");
                        }
                    }
                }
            }
        }
コード例 #7
0
        /**
         * <summary>Sets a _Camera as the new attachedCamera to follow.</summary>
         * <param name = "newCamera">The new _Camera to follow</param>
         * <param name = "transitionTime">The time, in seconds, that it will take to move towards the new _Camera</param>
         * <param name = "_moveMethod">How the Camera should move towards the new _Camera, if transitionTime > 0f (Linear, Smooth, Curved, EaseIn, EaseOut, CustomCurve)</param>
         * <param name = "_animationCurve">The AnimationCurve that dictates movement over time, if _moveMethod = MoveMethod.CustomCurve</param>
         */
        public void SetGameCamera(_Camera newCamera, float transitionTime = 0f, MoveMethod _moveMethod = MoveMethod.Linear, AnimationCurve _animationCurve = null)
        {
            if (newCamera == null)
            {
                return;
            }

            if (attachedCamera != null && attachedCamera is GameCamera25D)
            {
                if (newCamera is GameCamera25D)
                { }
                else
                {
                    RemoveBackground ();
                }
            }

            AssignOwnCamera ();
            _camera.ResetProjectionMatrix ();
            attachedCamera = newCamera;
            attachedCamera.SetCameraComponent ();

            if (attachedCamera && attachedCamera._camera)
            {
                _camera.farClipPlane = attachedCamera._camera.farClipPlane;
                _camera.nearClipPlane = attachedCamera._camera.nearClipPlane;
                _camera.orthographic = attachedCamera._camera.orthographic;
            }

            // Set LookAt
            if (attachedCamera is GameCamera)
            {
                GameCamera gameCam = (GameCamera) attachedCamera;
                cursorAffectsRotation = gameCam.followCursor;
                lookAtAmount = gameCam.cursorInfluence;
            }
            else if (attachedCamera is GameCameraAnimated)
            {
                GameCameraAnimated gameCam = (GameCameraAnimated) attachedCamera;
                if (gameCam.animatedCameraType == AnimatedCameraType.SyncWithTargetMovement)
                {
                    cursorAffectsRotation = gameCam.followCursor;
                    lookAtAmount = gameCam.cursorInfluence;
                }
                else
                {
                    cursorAffectsRotation = false;
                }
            }
            else
            {
                cursorAffectsRotation = false;
            }

            // Set background
            if (attachedCamera is GameCamera25D)
            {
                GameCamera25D cam25D = (GameCamera25D) attachedCamera;
                cam25D.SetActiveBackground ();
            }

            // TransparencySortMode
            if (attachedCamera is GameCamera2D)
            {
                _camera.transparencySortMode = TransparencySortMode.Orthographic;
            }
            else if (attachedCamera)
            {
                if (attachedCamera._camera.orthographic)
                {
                    _camera.transparencySortMode = TransparencySortMode.Orthographic;
                }
                else
                {
                    _camera.transparencySortMode = TransparencySortMode.Perspective;
                }
            }

            // UFPS
            if (KickStarter.settingsManager.movementMethod == MovementMethod.UltimateFPS)
            {
                UltimateFPSIntegration._Update (KickStarter.stateHandler.gameState);
            }

            KickStarter.stateHandler.LimitHotspotsToCamera (attachedCamera);

            if (transitionTime > 0f)
            {
                SmoothChange (transitionTime, _moveMethod, _animationCurve);
            }
            else if (attachedCamera != null)
            {
                attachedCamera.MoveCameraInstant ();
                SnapToAttached ();
            }
        }
コード例 #8
0
        public override float Run()
        {
            if (KickStarter.settingsManager.playerSwitching == PlayerSwitching.Allow)
            {
                PlayerPrefab newPlayerPrefab = KickStarter.settingsManager.GetPlayerPrefab(playerID);

                if (newPlayerPrefab != null)
                {
                    if (KickStarter.player != null && KickStarter.player.ID == playerID)
                    {
                        Log("Cannot switch Player - already controlling the desired character.");
                        return(0f);
                    }

                    if (newPlayerPrefab.playerOb != null)
                    {
                        KickStarter.playerInteraction.StopMovingToHotspot();
                        KickStarter.saveSystem.SaveCurrentPlayerData();

                        if (takeOldPlayerPosition)
                        {
                            if (KickStarter.player != null)
                            {
                                if (keepInventory)
                                {
                                    KickStarter.saveSystem.AssignItemsToPlayer(KickStarter.runtimeInventory.PlayerInvCollection, playerID);
                                }

                                _Camera oldCamera = KickStarter.mainCamera.attachedCamera;
                                KickStarter.player.RemoveFromScene();

                                // Transfer open sub-scene data since both are in the same scene
                                PlayerData tempPlayerData = new PlayerData();
                                tempPlayerData = KickStarter.sceneChanger.SavePlayerData(tempPlayerData);
                                string     openSubSceneData = tempPlayerData.openSubScenes;
                                PlayerData newPlayerData    = KickStarter.saveSystem.GetPlayerData(playerID);
                                newPlayerData.openSubScenes = openSubSceneData;

                                // Force-set position / scene
                                PlayerData oldPlayerData = KickStarter.saveSystem.GetPlayerData(KickStarter.saveSystem.CurrentPlayerID);
                                newPlayerData.CopyPosition(oldPlayerData);
                                newPlayerData.UpdatePresenceInScene();
                                oldPlayerData.currentScene = -1;

                                Player newPlayer = newPlayerPrefab.GetSceneInstance(true);
                                KickStarter.player = newPlayer;

                                if (KickStarter.player != null)
                                {
                                    KickStarter.player.EndPath();
                                    KickStarter.player.StopFollowing();
                                }

                                // Same camera
                                if (oldCamera != null && KickStarter.mainCamera.attachedCamera != oldCamera)
                                {
                                    oldCamera.MoveCameraInstant();
                                    KickStarter.mainCamera.SetGameCamera(oldCamera);
                                }

                                return(0f);
                            }
                            else
                            {
                                LogWarning("Cannot take the old Player's position because no Player is currently active!");
                            }
                        }
                        else
                        {
                            if (KickStarter.player != null)
                            {
                                if (stopOldMoving || !KickStarter.player.IsPathfinding())
                                {
                                    KickStarter.player.EndPath();
                                }
                            }

                            if (keepInventory)
                            {
                                KickStarter.saveSystem.AssignItemsToPlayer(KickStarter.runtimeInventory.PlayerInvCollection, playerID);
                            }

                            int sceneIndexToLoad = KickStarter.saveSystem.GetPlayerSceneIndex(playerID);
                            if (sceneIndexToLoad < 0)
                            {
                                bool hasData = (KickStarter.saveSystem.GetPlayerData(playerID) != null);
                                if (hasData)
                                {
                                    LogWarning("Cannot switch to Player ID " + playerID + " because their current scene index = " + sceneIndexToLoad);
                                }
                                else
                                {
                                    LogWarning("Cannot switch to Player ID " + playerID + " because no save data was found for them.");
                                }
                                return(0f);
                            }

                            SubScene subScene = KickStarter.sceneChanger.GetSubScene(sceneIndexToLoad);
                            if (subScene == null && SceneChanger.CurrentSceneIndex != sceneIndexToLoad)
                            {
                                // Different scene, and not open as a sub-scene
                                if (KickStarter.player != null)
                                {
                                    KickStarter.player.Halt();
                                }

                                KickStarter.saveSystem.SwitchToPlayerInDifferentScene(playerID, sceneIndexToLoad, assignScreenOverlay);
                                return(0f);
                            }

                            // Same scene

                            // Transfer open sub-scene data since both are in the same scene
                            PlayerData tempPlayerData = new PlayerData();
                            tempPlayerData = KickStarter.sceneChanger.SavePlayerData(tempPlayerData);
                            string     openSubSceneData = tempPlayerData.openSubScenes;
                            PlayerData newPlayerData    = KickStarter.saveSystem.GetPlayerData(playerID);
                            newPlayerData.openSubScenes = openSubSceneData;

                            Player newPlayer = newPlayerPrefab.GetSceneInstance(true);
                            KickStarter.player = newPlayer;

                            if (stopNewMoving && KickStarter.player != null)
                            {
                                KickStarter.player.EndPath();
                                KickStarter.player.StopFollowing();
                            }

                            if (KickStarter.mainCamera.attachedCamera && alwaysSnapCamera)
                            {
                                KickStarter.mainCamera.attachedCamera.MoveCameraInstant();
                            }
                        }
                    }
                    else
                    {
                        LogWarning("Cannot switch to an empty Player - no Player prefab is defined for ID " + playerID + ".");
                    }
                }
                else
                {
                    LogWarning("Cannot switch Player - no Player prefab is defined.");
                }
            }

            return(0f);
        }
コード例 #9
0
ファイル: ActionCamera.cs プロジェクト: IJkeB/Ekster1
        override public float Run()
        {
            if (!isRunning)
            {
                isRunning = true;

                MainCamera mainCam = KickStarter.mainCamera;

                if (mainCam)
                {
                    _Camera cam = linkedCamera;

                    if (returnToLast && mainCam.lastNavCamera)
                    {
                        if (mainCam.lastNavCamera != null && mainCam.attachedCamera == mainCam.lastNavCamera)
                        {
                            cam = (_Camera)mainCam.lastNavCamera2;
                        }
                        else
                        {
                            cam = (_Camera)mainCam.lastNavCamera;
                        }
                    }

                    if (cam)
                    {
                        if (mainCam.attachedCamera != cam)
                        {
                            if (cam is GameCameraThirdPerson)
                            {
                                GameCameraThirdPerson tpCam = (GameCameraThirdPerson)cam;
                                tpCam.ResetRotation();
                            }
                            else if (cam is GameCameraAnimated)
                            {
                                GameCameraAnimated animCam = (GameCameraAnimated)cam;
                                animCam.PlayClip();
                            }

                            mainCam.SetGameCamera(cam);
                            if (transitionTime > 0f)
                            {
                                if (linkedCamera is GameCamera25D)
                                {
                                    mainCam.SnapToAttached();
                                    Debug.LogWarning("Switching to a 2.5D camera (" + linkedCamera.name + ") must be instantaneous.");
                                }
                                else
                                {
                                    mainCam.SmoothChange(transitionTime, moveMethod, timeCurve);

                                    if (willWait)
                                    {
                                        return(transitionTime);
                                    }
                                }
                            }
                            else
                            {
                                cam.MoveCameraInstant();
                                mainCam.SnapToAttached();

                                if (linkedCamera is GameCameraAnimated && willWait)
                                {
                                    return(defaultPauseTime);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                if (linkedCamera is GameCameraAnimated && willWait)
                {
                    GameCameraAnimated animatedCamera = (GameCameraAnimated)linkedCamera;
                    if (animatedCamera.isPlaying())
                    {
                        return(defaultPauseTime);
                    }
                    else
                    {
                        isRunning = false;
                        return(0f);
                    }
                }
                else
                {
                    isRunning = false;
                    return(0f);
                }
            }

            return(0f);
        }