Axiom.Core.Entity.CloneVertexDataRemoveBlendInfo C# (CSharp) Method

CloneVertexDataRemoveBlendInfo() protected method

Internal method to clone vertex data definitions but to remove blend buffers.
protected CloneVertexDataRemoveBlendInfo ( VertexData source ) : VertexData
source Axiom.Graphics.VertexData Vertex data to clone.
return Axiom.Graphics.VertexData
		protected internal VertexData CloneVertexDataRemoveBlendInfo( VertexData source )
		{
			// Clone without copying data
			VertexData ret = source.Clone( false );
			VertexElement blendIndexElem =
					source.vertexDeclaration.FindElementBySemantic( VertexElementSemantic.BlendIndices );
			VertexElement blendWeightElem =
					source.vertexDeclaration.FindElementBySemantic( VertexElementSemantic.BlendWeights );

			// Remove blend index
			if ( blendIndexElem != null )
			{
				// Remove buffer reference
				ret.vertexBufferBinding.UnsetBinding( blendIndexElem.Source );
			}

			if ( blendWeightElem != null &&
				 blendWeightElem.Source != blendIndexElem.Source )
			{
				// Remove buffer reference
				ret.vertexBufferBinding.UnsetBinding( blendWeightElem.Source );
			}
			// remove elements from declaration
			ret.vertexDeclaration.RemoveElement( VertexElementSemantic.BlendIndices );
			ret.vertexDeclaration.RemoveElement( VertexElementSemantic.BlendWeights );

			// copy reference to w-coord buffer
			if ( source.hardwareShadowVolWBuffer != null )
			{
				ret.hardwareShadowVolWBuffer = source.hardwareShadowVolWBuffer;
			}

			return ret;
		}