/// <summary>
        /// Adds the transform object to the internal stack.
        /// </summary>
        /// <param name="transform">The transform.</param>
        private void AddTransform(Transformation transform)
        {
            if (_mtxModelViewStack.Count > 0)
            {
                if (transform.GlobalMatrixDirty)
                {
                    transform.Matrix = transform.GlobalMatrix*float4x4.Invert(_mtxModelViewStack.Peek());
                    transform.SetGlobalMat(_mtxModelViewStack.Peek()*transform.Matrix);
                    _mtxModelViewStack.Push(_mtxModelViewStack.Pop()*transform.Matrix);
                    //Debug.WriteLine("Matrix: " + transform.GlobalMatrix + " Point: " + transform.GlobalPosition);

                        _hasTransform.Pop();
                        _hasTransform.Push(true);

                    if (HasRenderingTriple())
                    {
                        AddRenderJob(_mtxModelViewStack.Peek(), _meshStack.Peek(), _RendererStack.Peek());
                    }
                    return;
                }

                transform.SetGlobalMat(_mtxModelViewStack.Peek()*transform.Matrix);
                _mtxModelViewStack.Push(_mtxModelViewStack.Pop()*transform.Matrix);
                //Debug.WriteLine("Matrix: " + transform.GlobalMatrix + " Point: " + transform.GlobalPosition);

                    _hasTransform.Pop();
                    _hasTransform.Push(true);

                if (HasRenderingTriple())
                {
                    AddRenderJob(_mtxModelViewStack.Peek(), _meshStack.Peek(), _RendererStack.Peek());
                }

            }else
            {
                _mtxModelViewStack.Push(transform.GlobalMatrix);
                //Debug.WriteLine("Matrix: " + transform.GlobalMatrix + " Point: " + transform.GlobalPosition);

                    if (_hasTransform.Count > 0)
                    {
                        _hasTransform.Pop();
                    }

                    _hasTransform.Push(true);

                if (HasRenderingTriple())
                {
                    AddRenderJob(_mtxModelViewStack.Peek(), _meshStack.Peek(), _RendererStack.Peek());
                }

            }
        }