Show
Ignore:
Timestamp:
07/03/08 18:39:10 (5 months ago)
Author:
phill
Message:

o Added camera-follows-tag feature.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/x42view.net/Gui/ModelWindow.cs

    r484 r594  
    9494                        vi3DShowShaded.Checked = previewMode == PreviewMode.Shaded; 
    9595                        btnShadedView.Checked = previewMode == PreviewMode.Shaded; 
     96 
     97                        UpdateCameraModeMenu(); 
    9698                } 
    9799 
     
    110112                        if( model.Model != null ) 
    111113                        { 
    112                                 cam.Reset(); 
    113                                 cam.CenterOnSphere( new Vector3( 
     114                                CameraTag = null; 
     115 
     116                                pn3DCamera.Reset(); 
     117                                pn3DCamera.CenterOnSphere( new Vector3( 
    114118                                        model.Model.BoundingSphere.Center.x, 
    115119                                        model.Model.BoundingSphere.Center.y, 
     
    118122                        } 
    119123                        else 
    120                                 cam.Reset(); 
     124                                pn3DCamera.Reset(); 
    121125                } 
    122126 
     
    150154                { 
    151155                        Helpers.DisposeAndClear( ref scoreDetails ); 
     156 
     157                        for( int i = cameraModeMenu.Items.Count - 1; i > 1; i-- ) 
     158                                cameraModeMenu.Items.RemoveAt( i ); 
     159 
     160                        Libx42.Model mod = model.Model; 
     161                        if( mod != null ) 
     162                        { 
     163                                if( mod.Tags.Count > 0 ) 
     164                                        cameraModeMenu.Items.Add( new ToolStripSeparator() ); 
     165 
     166                                foreach( Libx42.Tag tag in mod.Tags ) 
     167                                { 
     168                                        ToolStripMenuItem mi = new ToolStripMenuItem( tag.Name, Properties.Resources.tag, cameraModeMenuItem_Click ); 
     169                                        mi.Tag = tag; 
     170                                        cameraModeMenu.Items.Add( mi ); 
     171                                } 
     172                        } 
    152173 
    153174                        ResetCamera(); 
     
    280301 
    281302                        pn3D.Enable3D = false; //destroy device 
    282                         Camera.State sv = cam.SaveState(); 
     303                         
     304                        string camTag = null; 
     305                        if( cameraTag != null ) 
     306                        { 
     307                                camTag = cameraTag.Name; 
     308                                cameraTag = null; 
     309                        } 
     310 
     311                        Camera.State sv = pn3DCamera.SaveState(); 
    283312 
    284313                        using( Libx42.Model oldModel = model.Model ) 
     
    287316                        GenGroupTopology(); //refresh this data before the reload 
    288317 
    289                         cam.RestoreState( sv ); 
     318                        if( camTag != null ) 
     319                        { 
     320                                foreach( Libx42.Tag tag in model.Model.Tags ) 
     321                                        if( tag.Name == camTag ) 
     322                                        { 
     323                                                cameraTag = tag; 
     324                                                break; 
     325                                        } 
     326                        } 
     327 
     328                        pn3DCamera.RestoreState( sv ); 
     329                        pn3DCamera.Enabled = cameraTag != null; 
     330 
    290331                        pn3D.Enable3D = true; //bring it back 
    291332                } 
     
    322363                } 
    323364                #endregion 
     365 
     366                private void UpdateCameraModeMenu() 
     367                { 
     368                        ToolStripMenuItem mi; 
     369 
     370                        foreach( ToolStripItem tsi in cameraModeMenu.Items ) 
     371                        { 
     372                                mi = tsi as ToolStripMenuItem; 
     373                                if( mi == null ) 
     374                                        continue; 
     375 
     376                                if( mi.Tag == cameraTag ) 
     377                                { 
     378                                        mi.Checked = true; 
     379                                        btnCameraMode.Text = mi.Text; 
     380                                        btnCameraMode.Image = mi.Image; 
     381                                        btnCameraMode.DisplayStyle = mi.Image != null ? ToolStripItemDisplayStyle.ImageAndText : ToolStripItemDisplayStyle.Text; 
     382                                } 
     383                                else 
     384                                { 
     385                                        mi.Checked = false; 
     386                                } 
     387                        } 
     388                } 
     389 
     390                private void cameraModeMenuItem_Click( object sender, EventArgs e ) 
     391                { 
     392                         
     393                        ToolStripMenuItem mi = sender as ToolStripMenuItem; 
     394                        if( mi != null ) 
     395                        { 
     396                                Libx42.Tag tag = mi.Tag as Libx42.Tag; 
     397                                CameraTag = tag; 
     398                        } 
     399                } 
    324400        } 
    325401