public StreamWriter Dump(StreamWriter w, int indent) { // Write the components. w.AppendIndent(indent).Write("ComponentCount = "); w.Write(_componentIds.Count); w.AppendIndent(indent).Write("Components = {"); foreach (var component in Components) { w.AppendIndent(indent + 1).Write(component.GetType()); w.Write(" = "); w.Dump(component, indent + 1); } w.AppendIndent(indent).Write("}"); // Write systems. w.AppendIndent(indent).Write("SystemCount (excluding IDrawingSystems) = "); w.Write(_systems.Count(Packetizable.IsPacketizable)); w.AppendIndent(indent).Write("Systems = {"); for (int i = 0, j = _systems.Count; i < j; ++i) { if (!Packetizable.IsPacketizable(_systems[i])) { continue; } w.AppendIndent(indent + 1).Write(_systems[i].GetType()); w.Write(" = "); w.Dump(_systems[i], indent + 1); } w.AppendIndent(indent).Write("}"); return(w); }
/// <summary> /// The main entry point for the application. /// </summary> private static void Main(string[] args) { Packetizable.AddValueTypeOverloads(typeof(Engine.Math.PacketExtensions)); #if FARMATH Packetizable.AddValueTypeOverloads(typeof(Engine.FarMath.PacketExtensions)); #endif Packetizable.AddValueTypeOverloads(typeof(XnaExtensions.PacketExtensions)); using (var game = new TestRunner()) { game.Run(); } }
private Program() { // Some window settings. Window.Title = "Space. The Game. Seriously."; IsMouseVisible = true; // XNA's fixed time step implementation doesn't suit us, to be gentle. // So we let it be dynamic and adjust for it as necessary, leading // to almost no desynchronizations at all! Yay! IsFixedTimeStep = false; // We use this to dispose game components that are disposable and // were removed from the list of active components. We don't want // to dispose them during an update loop, because they will still // be updated if they had not been updated before the removal, // leading to object disposed exceptions. Components.ComponentRemoved += (sender, e) => _pendingComponents.Add(e.GameComponent); // Load settings. Save on exit. Settings.Load(SettingsFile); Exiting += (sender, e) => { Logger.Info("Saving settings."); Settings.Save(SettingsFile); }; // Set up display. GraphicsDeviceManager = new GraphicsDeviceManager(this) { PreferredBackBufferWidth = Settings.Instance.ScreenResolution.X, PreferredBackBufferHeight = Settings.Instance.ScreenResolution.Y, IsFullScreen = Settings.Instance.Fullscreen, SynchronizeWithVerticalRetrace = false, PreferMultiSampling = true }; // Create our own, localized content manager. Content = new LocalizedContentManager(Services) { RootDirectory = "data" }; // Register packet overloads for XNA value types. Packetizable.AddValueTypeOverloads(typeof(Engine.Math.PacketExtensions)); Packetizable.AddValueTypeOverloads(typeof(Engine.FarMath.PacketExtensions)); Packetizable.AddValueTypeOverloads(typeof(Engine.XnaExtensions.PacketExtensions)); }