using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lodestone.TestBed { public partial class MainWindow : Form { public class DemoHandle { public Type Demo; public Demo Create() { return (Demo)System.Activator.CreateInstance(Demo); } public override string ToString() { return Demo.Name; } } Demo currentDemo; Blacklight.Core.Cameras.MicroscopeCamera camera; public MainWindow() { InitializeComponent(); var types = System.Reflection.Assembly.GetExecutingAssembly().GetTypes(); var demos = types .Where(x => x.IsClass && x.IsSubclassOf(typeof(Demo))) .Select(x => new DemoHandle { Demo = x, }) .ToArray(); DemoSelector.Items.AddRange(demos); if (DemoSelector.Items.Count != 0) { DemoSelector.SelectedIndex = 0; } camera = new Blacklight.Core.Cameras.MicroscopeCamera(viewport.DrawableSurface); camera.Magnification = 1.0 / 5.0; } private void MainWindow_Load(object sender, EventArgs e) { } private void GameLoopTimer_Tick(object sender, EventArgs e) { if (currentDemo != null) { currentDemo.Step(1.0 / 60.0); var scene = currentDemo.Draw(); viewport.DrawableSurface.DrawScene(scene, camera); viewport.DrawableSurface.SubmitDrawCalls(); } } private void DemoSelector_SelectedIndexChanged(object sender, EventArgs e) { var demoHandle = (DemoHandle)DemoSelector.SelectedItem; currentDemo = demoHandle.Create(); currentDemo.Initialize(); } } }