コード例 #1
0
        /// <summary>
        /// Creates a new model based upon a <see cref="XMesh"/>, using an external texture and a plain white material.
        /// </summary>
        /// <param name="mesh">The <see cref="XMesh"/> providing the mesh data.</param>
        /// <param name="materials">The materials to use for rendering the model.</param>
        /// <remarks>Calling <see cref="IDisposable.Dispose"/> will call <see cref="IReferenceCount.ReleaseReference"/> on <paramref name="mesh"/> and <paramref name="materials"/>.</remarks>
        public Model(XMesh mesh, params XMaterial[] materials)
        {
            #region Sanity checks
            if (mesh == null)
            {
                throw new ArgumentNullException(nameof(mesh));
            }
            #endregion

            _asset = mesh;
            _asset.HoldReference();

            // Get mesh from asset
            Mesh = mesh.Mesh;

            // Get separate materials
            Materials     = materials ?? new XMaterial[0];
            NumberSubsets = Materials.Length;
            foreach (var material in Materials)
            {
                material.HoldReference();
            }
            _separateMaterials = true;

            // Get bounding bodies
            BoundingSphere = mesh.BoundingSphere;
            BoundingBox    = mesh.BoundingBox;
        }
コード例 #2
0
        /// <summary>
        /// Creates a new model based upon a <see cref="XMesh"/>, using its internal material data if available.
        /// </summary>
        /// <param name="mesh">The <see cref="XMesh"/> providing the mesh data.</param>
        /// <remarks>Calling <see cref="IDisposable.Dispose"/> will not dispose the <paramref name="mesh"/>. This is handled by the <see cref="CacheManager"/>.</remarks>
        public Model(XMesh mesh)
        {
            #region Sanity checks
            if (mesh == null)
            {
                throw new ArgumentNullException(nameof(mesh));
            }
            #endregion

            _asset = mesh;
            _asset.HoldReference();

            // Get mesh from asset
            Mesh = mesh.Mesh;

            // Get materials from asset
            Materials     = mesh.Materials;
            NumberSubsets = Materials.Length;

            // Get bounding bodies
            BoundingSphere = mesh.BoundingSphere;
            BoundingBox    = mesh.BoundingBox;
        }