Model3D.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / Model3D.cs / 1305600 / Model3D.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: 3D model implementation. 
//
//              See spec at http://avalon/medialayer/Specifications/Avalon3D%20API%20Spec.mht 
//
// History:
//  06/18/2003 : t-gregr - Created
// 
//---------------------------------------------------------------------------
 
using System; 
using System.Collections;
using System.Collections.Generic; 
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation; 
using MS.Internal.Media3D;
 
namespace System.Windows.Media.Media3D 
{
    ///  
    ///     Model3D is the abstract model that everything builds from.
    /// 
    [Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)] // cannot be read & localized as string
    public abstract partial class Model3D : Animatable 
    {
        //----------------------------------------------------- 
        // 
        //  Constructors
        // 
        //-----------------------------------------------------

        #region Constructors
 
        // Prevent 3rd parties from extending this abstract base class.
        internal Model3D() {} 
 
        #endregion Constructors
 
        //------------------------------------------------------
        //
        //  Public Methods
        // 
        //-----------------------------------------------------
 
        //------------------------------------------------------ 
        //
        //  Public Properties 
        //
        //------------------------------------------------------

        #region Public Properties 

        ///  
        ///     Gets bounds for this model. 
        /// 
        public Rect3D Bounds 
        {
            get
            {
                ReadPreamble(); 

                return CalculateSubgraphBoundsOuterSpace(); 
            } 
        }
 
        #endregion Public Properties

        //-----------------------------------------------------
        // 
        //  Internal Methods
        // 
        //------------------------------------------------------ 

        #region Internal Methods 

        // NOTE: Model3D hit testing takes the rayParams in the outer space of the
        //       Model3D.  That is, RayHitTest() will apply this model's transform
        //       to the ray for the caller. 
        //
        //       This is different than Visual hit testing which does not transform 
        //       the hit testing parameters by the Visual's transform. 
        internal void RayHitTest(RayHitTestParameters rayParams)
        { 
            Transform3D transform = Transform;

            rayParams.PushModelTransform(transform);
            RayHitTestCore(rayParams); 
            rayParams.PopTransform(transform);
        } 
 
        internal abstract void RayHitTestCore(RayHitTestParameters rayParams);
 
        /// 
        ///     Returns the bounds of the Model3D subgraph rooted at this Model3D.
        ///
        ///     Outer space refers to the space after this Model's Transform is 
        ///     applied -- or said another way, applying a transform to this Model
        ///     affects it's outer bounds.  (While its inner bounds remain unchanged.) 
        ///  
        internal Rect3D CalculateSubgraphBoundsOuterSpace()
        { 
            Rect3D innerBounds = CalculateSubgraphBoundsInnerSpace();

            return M3DUtil.ComputeTransformedAxisAlignedBoundingBox(ref innerBounds, Transform);
        } 

        ///  
        ///     Returns the bounds of the Model3D subgraph rooted at this Model3D. 
        ///
        ///     Inner space refers to the space before this Model's Transform is 
        ///     applied -- or said another way, applying a transform to this Model
        ///     only affects it's outer bounds.  Its inner bounds remain unchanged.
        /// 
        internal abstract Rect3D CalculateSubgraphBoundsInnerSpace(); 

        #endregion Internal Methods 
 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK