コード例 #1
0
        public static void Run <T>(string[] args) where T : MyObjectBuilder_SessionSettings, new()
        {
            if (DedicatedServer.ProcessArgs(args))
            {
                return;
            }


            if (Environment.UserInteractive)
            {
                MyPlugins.RegisterGameAssemblyFile(MyPerGameSettings.GameModAssembly);
                MyPlugins.RegisterSandboxAssemblyFile(MyPerGameSettings.SandboxAssembly);
                MyPlugins.RegisterSandboxGameAssemblyFile(MyPerGameSettings.SandboxGameAssembly);
                MyPlugins.RegisterFromArgs(args);
                MyPlugins.Load();
                ShowWindow(GetConsoleWindow(), SW_HIDE);
                MyConfigurator.Start <T>();
                MyPlugins.Unload();
                return;
            }
            else
            {
                MyServiceBase.Run(new WindowsService());
                return;
            }
        }
コード例 #2
0
        public static void Run <T>(string[] args) where T : MyObjectBuilder_SessionSettings, new()
        {
            if (DedicatedServer.ProcessArgs(args))
            {
                return;
            }


            if (Environment.UserInteractive)
            {
                MyPlugins.RegisterGameAssemblyFile(MyPerGameSettings.GameModAssembly);
                MyPlugins.RegisterGameObjectBuildersAssemblyFile(MyPerGameSettings.GameModObjBuildersAssembly);
                MyPlugins.RegisterSandboxAssemblyFile(MyPerGameSettings.SandboxAssembly);
                MyPlugins.RegisterSandboxGameAssemblyFile(MyPerGameSettings.SandboxGameAssembly);
                MyPlugins.RegisterFromArgs(args);
                MyPlugins.Load();
                bool resultRegisterAssemblies = MyObjectBuilderType.RegisterAssemblies();
                Debug.Assert(resultRegisterAssemblies, "Registering object builders types from assemblies failed.");
                resultRegisterAssemblies = MyObjectBuilderSerializer.RegisterAssembliesAndLoadSerializers();
                Debug.Assert(resultRegisterAssemblies, "Registering object builders serializers from assemblies failed.");
                ShowWindow(GetConsoleWindow(), SW_HIDE);
                MyConfigurator.Start <T>();
                MyPlugins.Unload();
                return;
            }
            else
            {
                MyServiceBase.Run(new WindowsService());
                return;
            }
        }
コード例 #3
0
        private void Reset( )
        {
            SteamReset( );

            /*
             * if (MyAPIGateway.Session != null)
             * {
             *      MyAPIGateway.Session.UnloadDataComponents();
             *      MyAPIGateway.Session.UnloadMultiplayer();
             *      MyAPIGateway.Session.Unload();
             * }
             */

            try
            {
                MyPlugins.Unload( );
            }
            catch { }

            MyAudio.Static.UnloadData( );
            MyAudio.UnloadData( );
            MyFileSystem.Reset( );

            InputReset( );

            PhysicsReset( );
        }
コード例 #4
0
        static void Main(string[] args)
        {
            MyPlugins.Load();

            var asyncInput = ReadConsoleAsync();

            Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs eventArgs)
            {
                eventArgs.Cancel = true;
                IsRunning        = false;
            };

            m_client = new MyRakNetClient((ulong)m_port);

            for (int i = 0; i < 10; i++)
            {
                switch (m_client.Startup(m_port))
                {
                case StartupResultEnum.SOCKET_PORT_ALREADY_IN_USE:
                    m_port++;
                    break;

                default:
                    break;
                }
            }

            new MyRakNetSyncLayer().LoadData(m_client, typeof(Program).Assembly);

            //MySyncedClass mySyncedObject = new MySyncedClass();
            //MySyncedFloatSNorm F = new MySyncedFloatSNorm();
            //mySyncedObject.Add(F);
            //MySyncedInt I = new MySyncedInt();
            //mySyncedObject.Add(I);

            //MySyncedClass myInnerSyncedObject = new MySyncedClass();
            //MySyncedVector3 V3 = new MySyncedVector3();
            //mySyncedObject.Add(V3);
            //mySyncedObject.Add(myInnerSyncedObject);
            //MyRakNetSyncLayer.RegisterSynced(mySyncedObject);

            MyRakNetSyncLayer.Static.OnEntityCreated   += Static_OnEntityCreated;
            MyRakNetSyncLayer.Static.OnEntityDestroyed += Static_OnEntityDestroyed;

            RegisterEvents(m_client);
            var result = m_client.Connect("127.0.0.1", 27025);

            while (IsRunning)
            {
                if (asyncInput.IsCompleted)
                {
                    var cmd = asyncInput.Result;
                    if (!String.IsNullOrEmpty(cmd))
                    {
                        if (cmd == "quit")
                        {
                            IsRunning = false;
                        }
                        else
                        {
                            m_client.SendChatMessage(cmd);
                        }
                    }
                    asyncInput = ReadConsoleAsync();
                }

                m_client.Update();

                if (foo != null)
                {
                    if (lastD != foo.Position.Get().X)
                    {
                        for (int i = 0; i < (foo.Position.Get().X + 1) / 2 * 115; i++)
                        {
                            Console.Out.Write("|");
                        }
                        Console.Out.WriteLine();
                        lastD = foo.Position.Get().X;
                    }

                    if (lastStr != foo.Name.Get())
                    {
                        Console.WriteLine(foo.Name.Get());
                        lastStr = foo.Name.Get();
                    }
                }

                //if (lastF != F)
                //{
                //    for (int i = 0; i < (F + 1) / 2 * 115; i++)
                //    {
                //        Console.Out.Write("|");
                //    }
                //    Console.Out.WriteLine();
                //    lastF = F;
                //}

                //if (lastI != I)
                //{
                //    for (int i = 0; i < I % 116; i++)
                //    {
                //        Console.Out.Write("-");
                //    }
                //    Console.Out.WriteLine();
                //    lastI = I;
                //}

                Thread.Sleep(16);
            }
            m_client.Dispose();
            MyRakNetSyncLayer.Static.UnloadData();
            MyPlugins.Unload();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: caomw/SpaceEngineers
        static void Main(string[] args)
        {
            MyPlugins.Load();

            var asyncInput = ReadConsoleAsync();

            Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs eventArgs)
            {
                eventArgs.Cancel = true;
                IsRunning        = false;
            };

            m_server = new MyRakNetServer(0);

            m_server.Startup(32, 27025, null);

            new MyRakNetSyncLayer().LoadData(m_server, typeof(Program).Assembly);

            //MySyncedClass mySyncedObject = new MySyncedClass();
            //MySyncedFloatSNorm F = new MySyncedFloatSNorm();
            //mySyncedObject.Add(F);
            //MySyncedInt I = new MySyncedInt();
            //mySyncedObject.Add(I);

            //MySyncedClass myInnerSyncedObject = new MySyncedClass();
            //MySyncedVector3 V3 = new MySyncedVector3();
            //mySyncedObject.Add(V3);
            //mySyncedObject.Add(myInnerSyncedObject);
            //MyRakNetSyncLayer.RegisterSynced(mySyncedObject);

            RegisterEvents(m_server);

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            Foo foo = null;

            bool sin = false;
            bool str = false;

            while (IsRunning)
            {
                if (asyncInput.IsCompleted)
                {
                    var cmd = asyncInput.Result;
                    if (!String.IsNullOrEmpty(cmd))
                    {
                        if (cmd == "quit")
                        {
                            IsRunning = false;
                        }
                        else if (cmd == "+")
                        {
                            foo          = new Foo();
                            foo.EntityID = 1;
                            MyRakNetSyncLayer.Replicate(foo, foo.EntityID);
                        }
                        else if (cmd == "-")
                        {
                            if (foo != null)
                            {
                                MyRakNetSyncLayer.Destroy(foo.EntityID);
                                foo = null;
                            }
                        }
                        else if (cmd == "sin")
                        {
                            if (foo != null)
                            {
                                sin = !sin;
                            }
                        }
                        else if (cmd == "str")
                        {
                            if (foo != null)
                            {
                                str = !str;
                            }
                        }
                        else
                        {
                            m_server.SendChatMessage(cmd);
                        }
                    }
                    asyncInput = ReadConsoleAsync();
                }

                if (foo != null)
                {
                    if (sin)
                    {
                        foo.Position.Set(new Vector3D(Math.Sin((double)stopWatch.ElapsedMilliseconds / 1000.0)));
                    }
                    if (str)
                    {
                        char c = (char)('a' + (byte)(stopWatch.ElapsedMilliseconds / 1000.0) % 26);
                        foo.Name.Set(String.Concat(Enumerable.Repeat(c, 100)));
                    }
                }

                //I.Set((int)(stopWatch.ElapsedMilliseconds / 1000.0));

                //F.Set((float)Math.Sin((double)stopWatch.ElapsedMilliseconds / 1000.0));
                //I.Set((int)(stopWatch.ElapsedMilliseconds/10));
                //V3.Set(new Vector3(F, F, F));

                MyRakNetSyncLayer.Static.Update();
                m_server.Update();

                //Console.Out.WriteLine(m_server.GetStatsToString());

                Thread.Sleep(16);
            }
            m_server.Dispose();
            MyRakNetSyncLayer.Static.UnloadData();
            MyPlugins.Unload();
        }