public EditorScreen(MainWindow window, MasterRenderer renderer)
        {
            this.Window     = window;
            this.renderer   = renderer;
            this.entReneder = renderer.GetRenderer3D <EntityRenderer>();

            UI = new EditorUI(renderer, this);

            debug = new DashCMDScreen("modeldebug", "", true, (s) =>
            {
                s.WriteLine("Mouse POS {0} {1}", Input.ClampedCursorX, Input.ClampedCursorY);
                s.WriteLine("Camera POS {0}", Camera.Active.Position);
                s.WriteLine("VoxelEditorObject POS {0}", (Model != null ? Model.CenterPosition : Vector3.Zero));
                s.WriteLine("");
                s.WriteLine("Current File {0}", CurrentFile);
                s.WriteLine("Fog: {0}; Enabled? {1}", renderer.GFXSettings.FogQuality, renderer.FogEnabled);
                s.WriteLine("FXAA: {0}", renderer.GFXSettings.ApplyFXAA);
                s.WriteLine("Shadows: {0}", renderer.GFXSettings.RenderShadows);
                s.WriteLine("PCF Samples: {0}", renderer.GFXSettings.ShadowPCFSamples);
                s.WriteLine("Wireframe: {0}", renderer.GlobalWireframe);
            })
            {
                SleepTime = 40,
            };

            DashCMD.AddScreen(debug);
            DashCMD.ExecuteCommand("screen modeldebug");

            Camera.Active.Speeds[0] = .5f;

            LoadNewModel();
        }
Esempio n. 2
0
        public SnapshotNetComponent(AOSClient client)
            : base(client)
        {
            snapshotSystem     = new SnapshotSystem(client);
            charSnapshotSystem = new CharacterSnapshotSystem(this, snapshotSystem);

            objectComponent = client.GetComponent <ObjectNetComponent>();
            objectComponent.OnCreatableInstantiated += ObjectComponent_OnCreatableInstantiated;
            objectComponent.OnCreatableDestroyed    += ObjectComponent_OnCreatableDestroyed;

            DashCMD.AddScreen(new DashCMDScreen("snapshot", "Displays information about the snapshot system.", true,
                                                (screen) =>
            {
                screen.WriteLine("Snapshot Round-Trip Time: {0}s", rtt);
                screen.WriteLine("Last Outbound Snapshot:", ConsoleColor.Cyan);
                screen.WriteLine("PacketHeader: {0} bytes", lastOutboundPacketStats.PacketHeader);
                screen.WriteLine("Acks: {0} bytes", lastOutboundPacketStats.Acks);
                screen.WriteLine("PlayerData: {0} bytes", lastOutboundPacketStats.PlayerData);
                screen.WriteLine("Total: {0} bytes", lastOutboundPacketStats.Total);
            })
            {
                SleepTime = 30
            });

            DashCMD.SetCVar("cl_tickrate", DEFAULT_TICKRATE);
            DashCMD.SetCVar("cl_await_sv_snap", false);

            //DashCMD.SetCVar("cl_tickrate", 25);
            //DashCMD.SetCVar("cl_await_sv_snap", true);

            syncTime = tickrate;
        }
        public SnapshotNetComponent(AOSServer server)
            : base(server)
        {
            snapshotSystem     = new SnapshotSystem(server);
            charSnapshotSystem = new CharacterSnapshotSystem(this, snapshotSystem);
            ConnectionStates   = new Dictionary <NetConnection, NetConnectionSnapshotState>();

            objectComponent = server.GetComponent <ObjectNetComponent>();
            objectComponent.OnCreatableInstantiated += ObjectComponent_OnCreatableInstantiated;
            objectComponent.OnCreatableDestroyed    += ObjectComponent_OnCreatableDestroyed;

            DashCMD.AddScreen(new DashCMDScreen("snapshot", "Displays information about the snapshot system.", true,
                                                (screen) =>
            {
                try
                {
                    foreach (KeyValuePair <NetConnection, NetConnectionSnapshotState> pair in ConnectionStates)
                    {
                        SnapshotStats stats = pair.Value.Stats;

                        screen.WriteLine("[{0}]:", pair.Key);
                        screen.WriteLine("Snapshot Round-Trip Time: {0}", pair.Value.RoundTripTime);
                        screen.WriteLine("PacketHeader: {0} bytes", stats.PacketHeader);
                        screen.WriteLine("Acks: {0} bytes", stats.Acks);
                        screen.WriteLine("PlayerData: {0} bytes", stats.PlayerData);
                        screen.WriteLine("TerrainData: {0} bytes", stats.TerrainData);
                        screen.WriteLine("Total: {0} bytes", stats.Total);
                        screen.WriteLine("");
                    }
                }
                catch (Exception) { }
            })
            {
                SleepTime = 30
            });

            DashCMD.SetCVar("sv_tickrate", DEFAULT_TICKRATE);
            DashCMD.SetCVar("sv_await_cl_snap", false);
            DashCMD.SetCVar <ushort>("ag_max_cl_tickrate", 100);
            DashCMD.SetCVar("ag_cl_force_await_snap", false);

            //DashCMD.SetCVar("sv_tickrate", 25);
            //DashCMD.SetCVar("sv_await_cl_snap", true);
            //DashCMD.SetCVar<ushort>("ag_max_cl_tickrate", 30);
            //DashCMD.SetCVar("ag_cl_force_await_snap", true);
        }
        void InitializeCMD()
        {
            NetLogger.LogObjectStateChanges = true;
            NetLogger.LogVerboses           = true;

            DashCMD.AddScreen(new DashCMDScreen("network", "", true,
                                                (screen) =>
            {
                screen.WriteLine("Heartbeat Compution Time: {0}ms", client.HeartbeatComputionTimeMS);
                screen.WriteLine("Send Rate: {0}", client.ServerConnection.PacketSendRate);
                screen.WriteLine("MTU: {0}", client.ServerConnection.Stats.MTU);
                screen.WriteLine("Ping: {0}", client.ServerConnection.Stats.Ping);
                screen.WriteLine("VPackets s/s: {0}", client.ServerConnection.Stats.PacketsSentPerSecond);
                screen.WriteLine("VPackets r/s: {0}", client.ServerConnection.Stats.PacketsReceivedPerSecond);
                screen.WriteLine("Packets Lost: {0}", client.ServerConnection.Stats.PacketsLost);
                screen.WriteLine("PPackets s/s: {0}", client.ServerConnection.Stats.PhysicalPacketsSentPerSecond);
                screen.WriteLine("PPackets r/s: {0}", client.ServerConnection.Stats.PhysicalPacketsReceivedPerSecond);
            }));
        }
Esempio n. 5
0
        protected override void Load()
        {
            base.Load();
            LogOpenGLDrivers();

            //if (AL.Efx == null)
            //    throw new Exception("Sound card does not support OpenAL Efx!");

            AL.DistanceModel(ALDistanceModel.LinearDistance);

            // 1 meter = 1 block
            Camera.Active.AudioListener.EfxMetersPerUnit = 1f / Block.CUBE_SIZE;

            LoadFromConfig();

            DashCMD.SetCVar("r_vsync", GetVSync());
            DashCMD.SetCVar("r_targfps", TargetFrameRate);
            DashCMD.SetCVar("r_exp_shadows", false);

            GLError.Begin();
            Renderer.AddRenderer(new VoxelRenderer(Renderer));
            Renderer.AddRenderer(new EntityRenderer(Renderer));
            Renderer.AddRenderer(new ChunkRenderer(Renderer));
            Renderer.AddRenderer(new DebugRenderer(Renderer));

            Light sun = new Light(new Vector3(2, 1, 2), LightType.Directional, 1.75f, new Color(255, 255, 255, 255));

            Renderer.Lights.Add(sun);
            Renderer.Sun = sun;

            Camera.Active.SetMode(CameraMode.ArcBall);
            Camera.Active.SmoothCamera = true;

            StaticGui = new StaticGui(this, Renderer);

            SetupDefaultBinds();

            AddScreen(new MainMenuScreen(this));
            AddScreen(new SingleplayerScreen(this));
            AddScreen(new MultiplayerScreen(this));
            AddScreen(new NewText.NewTextScreen(this));

            DashCMD.AddScreen(new DashCMDScreen("dt", "", true,
                                                (screen) =>
            {
                screen.WriteLine("DeltaTime: {0}s", lastDeltaTime);
            })
            {
                SleepTime = 30
            });

#if DEBUG
            DashCMD.AddCommand("connect",
                               "Connects to a server",
                               "connect <ip:port>",
                               (args) =>
            {
                if (args.Length < 1)
                {
                    DashCMD.ShowSyntax("connect");
                    return;
                }

                string[] parts = args[0].Split(':');
                if (parts.Length != 2)
                {
                    DashCMD.WriteError("Invalid arguments. (connect ip:port)");
                    return;
                }

                IPAddress ip;
                if (!NetHelper.TryParseIP(parts[0], out ip))
                {
                    DashCMD.WriteError("Invalid ip address");
                    return;
                }

                int port;
                if (!int.TryParse(parts[1], out port))
                {
                    DashCMD.WriteError("Invalid port.");
                    return;
                }

                SwitchScreen("Multiplayer", new IPEndPoint(ip, port), "TestPlayer1");
            });
#endif
            SwitchScreen("MainMenu");
        }
        void InitializeDebugging()
        {
            DashCMD.AddCommand("endpoint", "Displays the server's ip endpoint.",
                               (args) =>
            {
                DashCMD.WriteLine("Bound IPEndPoint: {0}", AOSServer.Instance.BoundEndPoint);
                DashCMD.WriteLine("Receive IPEndPoint: {0}", AOSServer.Instance.ReceiveEndPoint);
                DashCMD.WriteLine("");
            });

            DashCMD.AddCommand("exit", "Stops the server.",
                               (args) =>
            {
                DashCMD.WriteImportant("Shutting down server...");
                AOSServer.Instance.Shutdown("Server shutting down...");
                Stop();
                DashCMD.Stop();
            });

            DashCMD.AddScreen(new DashCMDScreen("dt", "", true,
                                                (screen) =>
            {
                screen.WriteLine("DeltaTime: {0}s", lastDeltaTime);
            })
            {
                SleepTime = 30
            });

            DashCMD.AddScreen(new DashCMDScreen("network", "", true,
                                                (screen) =>
            {
                screen.WriteLine("General Stats:", ConsoleColor.Green);
                screen.WriteLine("Heartbeat Compution Time: {0}ms", AOSServer.Instance.HeartbeatComputionTimeMS);

                int totalPhysicalPS = 0;
                int totalVirtualPS  = 0;

                foreach (NetConnection client in server.Connections.Values)
                {
                    totalPhysicalPS += client.Stats.PhysicalPacketsReceivedPerSecond;
                    totalVirtualPS  += client.Stats.PacketsReceivedPerSecond;
                }

                screen.WriteLine("Total PPackets r/s: {0}", totalPhysicalPS);
                screen.WriteLine("Total VPackets r/s: {0}", totalVirtualPS);

                screen.WriteLine("");
                foreach (NetConnection client in server.Connections.Values)
                {
                    screen.WriteLine("[{0}]:", ConsoleColor.Green, client);
                    screen.WriteLine("Send Rate: {0}", client.PacketSendRate);
                    screen.WriteLine("MTU: {0}", client.Stats.MTU);
                    screen.WriteLine("Ping: {0}", client.Stats.Ping);
                    screen.WriteLine("VPackets s/s: {0}", client.Stats.PacketsSentPerSecond);
                    screen.WriteLine("VPackets r/s: {0}", client.Stats.PacketsReceivedPerSecond);
                    screen.WriteLine("Packets Lost: {0}", client.Stats.PacketsLost);
                    screen.WriteLine("PPackets s/s: {0}", client.Stats.PhysicalPacketsSentPerSecond);
                    screen.WriteLine("PPackets r/s: {0}", client.Stats.PhysicalPacketsReceivedPerSecond);
                }
            }));
        }