예제 #1
0
        protected override void Update()
        {
            base.Update();
            Vector2 currentResolution = new Vector2(Screen.width, Screen.height);

            if (_cachedResolution == currentResolution)
            {
                return;
            }
            InternalObjectUtils.BroadcastAll("OnResolutionChanged", currentResolution);
            _cachedResolution = currentResolution;
        }
예제 #2
0
        protected override void Start()
        {
            base.Start();
            transform.position = new Vector3(0, 0, 0);
            InternalObjectUtils.CheckObjects();

            LogUtils.Log("Initializing World...");
            gameObject.AddComponent <PlayerModelControllerNetwork>();
            gameObject.AddComponent <InteractManager>();
            gameObject.AddComponent <SpawnManager>();
            gameObject.AddComponent <VehicleManager>();
            var mgr = gameObject.AddComponent <NetvarManager>();

            mgr.RegisterNetvar(new GravityNetvar());
            mgr.RegisterNetvar(new GameSpeedNetvar());
            if (IsServer())
            {
                gameObject.AddComponent <CommandManager>();
            }
            gameObject.AddComponent <Scheduler>();

            PluginManager.Init(IOUtil.GetPluginsDir());
            UMAModelController.Init();

            Connection conn = FindObjectOfType <Connection>();
            var        chat = gameObject.AddComponent <Chat>();

            Chat.SetInstance(chat);
            conn.SendMessage("OnChatInit", chat);

            if (Connection.IsClient() && !Connection.IsSinglePlayer)
            {
                _commandsObj = new ClientConsoleCommands();
            }
            else if (Connection.IsServer())
            {
                _commandsObj = new ServerConsoleCommands();
            }

            if (_commandsObj != null)
            {
                Console.Instance.RegisterCommands(_commandsObj);
            }
            Loaded = true;
            conn.SendMessage("OnWorldInit", this, SendMessageOptions.DontRequireReceiver);

            LoadPlugins();

            if (IsDedicatedServer())
            {
                LoadWeather();
            }
        }
예제 #3
0
        protected override void Start()
        {
            base.Start();
            InternalObjectUtils.CheckObjects();

            if (!LevelManager.Instance.IsLoading)
            {
                throw new Exception("Not loading??");
            }

            LoadingOperation = SceneManager.LoadSceneAsync(LevelManager.Instance.PendingLevel);
        }
예제 #4
0
        public void OpenGameServer(bool lan = false)
        {
            InternalObjectUtils.CheckObjects();
            if (Provider == null)
            {
                Provider = new LidgrenServer(this);
            }
            try
            {
                ((ServerMultiplayerProvider)Provider).Open("*", Port, lan);
            }
            catch (Exception exception)
            {
                exception.Log();
                Application.Quit();
                return;
            }

            IsConnected = true;

            CurrentTime = ((ServerMultiplayerProvider)Provider).GetServerRealTime();
            ((ServerMultiplayerProvider)Provider).SetMaxPlayerCount(MaxPlayers);
            ((ServerMultiplayerProvider)Provider).SetServerName(((ServerMultiplayerProvider)Provider).Description);
            ((ServerMultiplayerProvider)Provider).SetPasswordProtected(false); //Todo
            ((ServerMultiplayerProvider)Provider).SetMapName(Map);
            LevelManager.Instance.LoadLevel(Map, false, true);                 //Todo


            ServerID = Provider.GetServerIdent();
            ClientID = ServerID;

            ClientName = "Console";
            LastNet    = Time.realtimeSinceStartup;
            OffsetNet  = 0f;

            //Todo: OnServerStart
        }
예제 #5
0
        protected override void Awake()
        {
            base.Awake();
            Connection = new GameObject("Connection");
            CameraManager.Instance.CurrentCamera = GameObject.Find("Main Camera").GetComponent <Camera>();

            DontDestroyOnLoad(GameObject.Find("EventSystem"));

            if (_firstStart)
            {
                API.ConsoleFramework.Console.Init();
            }
            else
            {
                API.ConsoleFramework.Console.Instance.ClearCommands();
            }

            DefaultConsoleCommands defaultCmds = new DefaultConsoleCommands();

            API.ConsoleFramework.Console.Instance.RegisterCommands(defaultCmds);

            if (_firstStart)
            {
                InternalObjectUtils.CheckObjects();
                if (!Debug.isDebugBuild && SteamAPI.RestartAppIfNecessary(GameInfo.ID))
                {
                    Application.Quit();
                    return;
                }

                Fading.Init();

                _parser = new FluentCommandLineParser <ApplicationArguments>();

                _parser.Setup(arg => arg.Dedicated)
                .As('d', "dedicated")
                .Callback(DedicatedCallback)
                .SetDefault(false);

                _parser.Setup(arg => arg.Lan)
                .As('l', "lan")
                .SetDefault(false);

                var result = _parser.Parse(Environment.GetCommandLineArgs());
                if (result.HasErrors)
                {
                    LogUtils.LogError("Couldn't parse arguments: " + result.ErrorText);
                }

                _firstStart = false;
            }


#if !UNITY_EDITOR
            LogUtils.Debug("Commandline: " + Environment.CommandLine);

            if (Debug.isDebugBuild)
            {
                LogUtils.Debug("##### Debug build #####");
            }
#endif
        }