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 static string TextureTempFolder = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Xenki_Texture"); public static string TextureCacheFolder = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Xenki_Texture_Cache"); 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 xx = new DefaultRenderer.DefaultRenderer(m_viewport); // DefaultTexture.DefaultTexture texture = DefaultTexture.DefaultTexture.SingleTextureManager(); debug("Creating mesher"); xx.Mesher = new OpenMetaverse.Rendering.Meshmerizer(); debug("Creating network"); network = new DefaultNetwork.DefaultNetwork(xx); //network.DefaultTexture = texture; network.OnLog += network_OnLog; network.OnMessageChat += network_OnMessageChat; } catch (Exception e) { debug("Graphics Error: " + e); } } void network_OnMessageChat(string msg) { messageDialog.Dispatcher.Invoke( DispatcherPriority.Normal, new System.Windows.Forms.MethodInvoker (delegate { if (messageDialog.Items.Count > 20) messageDialog.Items.RemoveAt(0); messageDialog.Items.Add(msg); } ) ); } 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(log); Console.WriteLine(log); //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; frameCounter = 0; recentTime = DateTime.Now; } } private void btnmessage_Click(object sender, RoutedEventArgs e) { network.SendChatMessage(txtMessage.Text, 0, OpenMetaverse.ChatType.Normal); } } }