using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using Slipstream; using Azimuth; using Annulus; namespace Slipstream.Testbed { class Program { static void Main(string[] args) { // It takes ~3 seconds to start up the main window form. // It would be good to have a splash screen during these seconds // System.Windows.Forms.MessageBox.Show("Starting"); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Blacklight.Core.GraphicsAdapterManager.Singleton.ForceStartup(); if (Blacklight.Core.GraphicsAdapterManager.Singleton.Modules.Count == 0) { System.Windows.Forms.MessageBox.Show( "Could not locate any Blacklight graphics addapters (eg: XNA, Tao, or GDI). " + "Will now exit.", "Critical Error"); return; } Blacklight.Core.GraphicsAdapterManager.Singleton.SetCurrentModule( Blacklight.Core.GraphicsAdapterManager.Singleton.Modules.First()); var mainWindow = new MainWindow(); var world = new FluidWorld(); ResetWorld(world); mainWindow.world = world; Application.Run(mainWindow); } public static void ResetWorld(FluidWorld world) { foreach(var body in world.BoundaryBodies.ToList()) { world.RemoveBoundaryBody(body); } foreach(var vorton in world.Vortons.ToList()) { world.RemoveVorton(vorton); } foreach(var particle in world.TracerParticles.ToList()) { world.RemoveTracerParticle(particle); } //world.AddVorton(new Vorton //{ // Motion = Vorton.MotionType.DYNAMIC, // Position = new Vector(-100, 0), // Vorticity = 2500, //}); //world.AddVorton(new Vorton //{ // Motion = Vorton.MotionType.DYNAMIC, // Position = new Vector(100, 0), // Vorticity = 2500, //}); //world.AddVorton(new Vorton //{ // Motion = Vorton.MotionType.DYNAMIC, // Position = new Vector(0, Math.Sqrt(2) * 100), // Vorticity = 25000, //}); //world.AddVorton(new Vorton //{ // Motion = Vorton.MotionType.DYNAMIC, // Position = new Vector(10, Math.Sqrt(2) * 100), // Vorticity = -50000, //}); //world.AddVorton(new Vorton //{ // Motion = Vorton.MotionType.DYNAMIC, // Position = new Vector(20, Math.Sqrt(2) * 100), // Vorticity = -25000, //}); var vertices = new SimplePolygon(new Vector[] { new Vector(0, 0), new Vector(-10, 0), new Vector(-12, 1), new Vector(-11, 2), new Vector(-9, 3), new Vector(-8, 4), }); var fluidBody = new BoundaryBody(vertices, Vector.Zero, 0.0, 10); world.AddBoundaryBody(fluidBody); Random rand = new Random(1); for (int i = 0; i < 1000; ++i) { world.AddTracerParticle(new TracerParticle { Position = new Vector(2 * rand.NextDouble() - 1, 2 * rand.NextDouble() - 1) * 100, }); } } } }