private void btnOpenSandbox_Click(object sender, RoutedEventArgs e) { var ofd = new OpenFileDialog(); if ((bool)ofd.ShowDialog()) { var h3 = new Halo3(ofd.FileName); lblSandboxPath.Text = ofd.FileName; var container = new Model3DCollection(); foreach (var placedObject in h3.SandboxObjects.Where(placedObject => placedObject.TagIndex != -1)) { // Try to load Model if (placedObject.TagEntry.Tag.TagPath.Contains("spawning")) { } string gameAssetPath; try { gameAssetPath = VariousFunctions.GetGameAsset(Halo3.GameId, placedObject.TagEntry.Tag.TagPath); } catch (FileNotFoundException) { ActionLog.AddEntry("Missing Game Asset"); continue; } var model = (Model3D)ModelImporter.Load(gameAssetPath); model.Transform = CreateTransformGroup(placedObject); container.Add(model); } ModelViewport.Children.Clear(); ModelViewport.Children.Add(new GridLines()); foreach (var model in container) { ModelViewport.Children.Add(new ModelVisual3D { Content = model }); } var light = new LightVisual3D(); var ambientLight = new AmbientLight(Colors.WhiteSmoke) { Transform = new MatrixTransform3D(new Matrix3D { OffsetX = 0, OffsetY = 0, OffsetZ = 100 }) }; light.Content = ambientLight; ModelViewport.Children.Add(light); ModelViewport.ShowCameraInfo = true; ModelViewport.ZoomExtents(); ModelViewport.IsHeadLightEnabled = true; } }
void MainWindow_Loaded(object sender, RoutedEventArgs e) { object oVisual = XamlReader.Load (new FileStream (@"..\..\3DModules\Fighter.xaml", FileMode.Open)); vpMain.Camera = new PerspectiveCamera( new Point3D(-500, 0, 0), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0), 45 ); lvMain = new LightVisual3D(); grpMain = new Model3DGroup(); lvMain.Content = grpMain; grpMain.Children.Add(oVisual as Model3DGroup); lvMain.AddLight(Colors.Wheat, new Vector3D(-1, -1, -1), Colors.Gray); vpMain.Children.Add(lvMain); for (int i = 0; i <= 200; i++) { LightVisual3D lv = new LightVisual3D(); Model3DGroup grp = new Model3DGroup(); lv.Content = grp; grp.Children.Add(oVisual as Model3DGroup); lv.Transform = new TranslateTransform3D(0, 0, -100 * i); lvMain.Children.Add(lv); } ca = new EventCameraAgent(vpMain); ca.BindEventTo(this); ca.OnMouseDown += MainWindow_MouseDown; ca.OnMouseMove += MainWindow_MouseMove; //WinAPI.SetCursorPos(ActualWidth / 2, ActualHeight / 2); WinAPI.SetCursorPos(200, 200); MouseDown += new MouseButtonEventHandler(MainWindow_MouseDown); Activated += new EventHandler(MainWindow_Activated); }
void MainWindow_Loaded(object sender, RoutedEventArgs e) { object oVisual = XamlReader.Load (new FileStream (@"..\..\3DModules\Fighter.xaml", FileMode.Open)); vpMain.Camera = new PerspectiveCamera( new Point3D(-500, 0, 0), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0), 45 ); lvMain = new LightVisual3D(); grpMain = new Model3DGroup(); lvMain.Content = grpMain; grpMain.Children.Add(oVisual as Model3DGroup); lvMain.AddLight(Colors.Wheat, new Vector3D(-1, -1, -1), Colors.Gray); vpMain.Children.Add(lvMain); for (int i = 0; i <= 200; i++) { LightVisual3D lv = new LightVisual3D(); Model3DGroup grp = new Model3DGroup(); lv.Content = grp; grp.Children.Add(oVisual as Model3DGroup); lv.Transform = new TranslateTransform3D(0, 0, -100 * i); lvMain.Children.Add(lv); } ca = new EventCameraAgent(vpMain); ca.BindEventTo(this); ca.OnMouseDown += MainWindow_MouseDown; ca.OnMouseMove += MainWindow_MouseMove; //WinAPI.SetCursorPos(ActualWidth / 2, ActualHeight / 2); WinAPI.SetCursorPos(200, 200); MouseDown += new MouseButtonEventHandler(MainWindow_MouseDown); Activated += new EventHandler(MainWindow_Activated); }