public StreamReader(VertexBuffers.DefinitionBase stream_def)
            {
                definition = stream_def;
                if (UsesNullDefinition)
                {
                    return;
                }

                elements = stream_def.GetElements();

                declTypes        = new DeclarationTypes.IDeclType[elements.Length];
                streamedElements = new LowLevel.Math.real_quaternion[elements.Length];

                for (int x = 0; x < elements.Length; x++)
                {
                    var dt = (declTypes[x] = elements[x].DeclarationType.AllocateDeclType());

                    if (dt is DeclarationTypes.Skip)
                    {
                        (dt as DeclarationTypes.Skip).ByteCount = elements[x].GetUsageData();
                    }
                }
            }
			public StreamReader(VertexBuffers.DefinitionBase stream_def)
			{
				definition = stream_def;
				if (UsesNullDefinition) return;

				elements = stream_def.GetElements();

				declTypes = new DeclarationTypes.IDeclType[elements.Length];
				streamedElements = new LowLevel.Math.real_quaternion[elements.Length];

				for (int x = 0; x < elements.Length; x++)
				{
					var dt = (declTypes[x] = elements[x].DeclarationType.AllocateDeclType());

					if (dt is DeclarationTypes.Skip)
						(dt as DeclarationTypes.Skip).ByteCount = elements[x].GetUsageData();
				}
			}