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;
            }
        }
示例#2
0
		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);
			
		}
示例#3
0
        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);
        }