using System; using System.Windows; using System.Windows.Controls; using System.Windows.Threading; using System.Windows.Media; namespace Xenki { /// /// Interaction logic for Page1.xaml /// public partial class Mainform : Page { DefaultNetwork.DefaultNetwork network; public Mainform() { InitializeComponent(); recentTime = DateTime.Now; CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering); App.Current.Exit += Current_Exit; Startup(); } void Current_Exit(object sender, ExitEventArgs e) { network.Stop(); } private void Startup() { try { debug("Creating renderer"); DefaultRenderer.DefaultRenderer x = new DefaultRenderer.DefaultRenderer(m_viewport); debug("Creating mesher"); x.Mesher = new OpenMetaverse.Rendering.SimpleRenderer(); debug("Creating network"); network = new DefaultNetwork.DefaultNetwork(x); network.OnLog += network_OnLog; } catch (Exception e) { debug("Graphics Error: " + e); } } void network_OnLog(string msg) { debug(msg); } private void debug(string log) { logBox.Dispatcher.Invoke( DispatcherPriority.Normal, new System.Windows.Forms.MethodInvoker (delegate { ListBoxItem lbi = new ListBoxItem(); lbi.Content = log; if (logBox.Items.Count > 20) logBox.Items.RemoveAt(0); logBox.Items.Add(lbi); //logBox.ScrollIntoView(lbi); } ) ); /* frameRate.Dispatcher.Invoke( DispatcherPriority.Normal, new System.Windows.Forms.MethodInvoker (delegate { } ) ); */ } private void loginButton_Click(object sender, RoutedEventArgs e) { string user = loginUser.Text; string last = loginLast.Text; string pass = loginPass.Password; try { debug("Starting network"); network.Start(user, last, pass); } catch (Exception ex) { debug("Network Error: " + ex); } loginGrid.Visibility = System.Windows.Visibility.Collapsed; } private static int frameCounter = 0; private static DateTime recentTime; void CompositionTarget_Rendering(object sender, EventArgs e) { frameCounter++; if ((DateTime.Now - recentTime) > TimeSpan.FromSeconds(1)) { frameRate.Content = "FPS: " + frameCounter/1; frameCounter = 0; recentTime = DateTime.Now; } } } }