#region License /* FNA - XNA4 Reimplementation for Desktop Platforms * Copyright 2009-2016 Ethan Lee and the MonoGame Team * * Released under the Microsoft Public License. * See LICENSE for details. */ #endregion #region Using Statements using System; using System.Runtime.InteropServices; #endregion namespace Microsoft.Xna.Framework.Graphics { [Serializable] [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct VertexPositionNormalTexture : IVertexType { #region Private Properties VertexDeclaration IVertexType.VertexDeclaration { get { return VertexDeclaration; } } #endregion #region Public Variables public Vector3 Position; public Vector3 Normal; public Vector2 TextureCoordinate; #endregion #region Public Static Variables public static readonly VertexDeclaration VertexDeclaration; #endregion #region Private Static Constructor static VertexPositionNormalTexture() { VertexDeclaration = new VertexDeclaration( new VertexElement[] { new VertexElement( 0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0 ), new VertexElement( 12, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0 ), new VertexElement( 24, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0 ) } ); } #endregion #region Public Constructor public VertexPositionNormalTexture( Vector3 position, Vector3 normal, Vector2 textureCoordinate ) { Position = position; Normal = normal; TextureCoordinate = textureCoordinate; } #endregion #region Public Static Operators and Override Methods public override int GetHashCode() { // TODO: Fix GetHashCode return 0; } public override string ToString() { return ( "{{Position:" + Position.ToString() + " Normal:" + Normal.ToString() + " TextureCoordinate:" + TextureCoordinate.ToString() + "}}" ); } public static bool operator ==(VertexPositionNormalTexture left, VertexPositionNormalTexture right) { return ( (left.Position == right.Position) && (left.Normal == right.Normal) && (left.TextureCoordinate == right.TextureCoordinate) ); } public static bool operator !=(VertexPositionNormalTexture left, VertexPositionNormalTexture right) { return !(left == right); } public override bool Equals(object obj) { if (obj == null) { return false; } if (obj.GetType() != base.GetType()) { return false; } return (this == ((VertexPositionNormalTexture) obj)); } #endregion } }