Example #1
0
        /** Updates the Player's presence in the scene. According to the data set in this class, they will be added to or removed from the scene. */
        public void UpdatePresenceInScene()
        {
            PlayerPrefab playerPrefab = KickStarter.settingsManager.GetPlayerPrefab(playerID);

            if (playerPrefab != null)
            {
                if (KickStarter.saveSystem.CurrentPlayerID == playerID)
                {
                    playerPrefab.SpawnInScene(false);
                }
                else if (SceneChanger.CurrentSceneIndex == currentScene)
                {
                    playerPrefab.SpawnInScene(false);
                }
                else
                {
                    SubScene subScene = KickStarter.sceneChanger.GetSubScene(currentScene);
                    if (subScene != null)
                    {
                        playerPrefab.SpawnInScene(subScene.gameObject.scene);
                    }
                    else
                    {
                        playerPrefab.RemoveFromScene();
                    }
                }
            }
        }
Example #2
0
        public static void PreparePlayer()
        {
            saveSystem.SpawnAllPlayers();

            Player[] localPlayers = FindObjectsOfType <Player> ();

            if (settingsManager.playerSwitching == PlayerSwitching.Allow)
            {
                // Local players are ignored
                foreach (Player localPlayer in localPlayers)
                {
                    if (localPlayer.ID <= -1)
                    {
                        ACDebug.LogWarning("Local Player " + localPlayer.GetName() + " found in scene " + localPlayer.gameObject.scene.name + ". This is not allowed when Player Switching is enabled - in this mode, Players can only be spawned in.", localPlayer);
                    }
                }

                PlayerPrefab playerPrefab = settingsManager.GetPlayerPrefab(saveSystem.CurrentPlayerID);
                if (playerPrefab != null)
                {
                    playerPrefab.SpawnInScene(true);
                }
            }
            else
            {
                // Local players take priority
                foreach (Player localPlayer in localPlayers)
                {
                    if (localPlayer.ID == -1)
                    {
                        localPlayer.ID = -2 - SceneChanger.CurrentSceneIndex;                         // Always unique to the scene
                        player         = localPlayer;
                        return;
                    }
                }

                foreach (Player localPlayer in localPlayers)
                {
                    if (localPlayer.ID == 0)
                    {
                        player = localPlayer;
                        return;
                    }
                }

                if (settingsManager.GetDefaultPlayer() != null)
                {
                    player = settingsManager.GetDefaultPlayer().SpawnFromPrefab(0);
                }
            }

            if (player == null && settingsManager.movementMethod != MovementMethod.None)
            {
                ACDebug.LogWarning("No Player found - this can be assigned in the Settings Manager.");
            }

            if (player)
            {
                player.EndPath();
                player.Halt(false);
            }

            KickStarter.saveSystem.SpawnFollowingPlayers();
        }