Exemplo n.º 1
0
        /// <summary>
        /// CompareTo Implementation
        /// If both transparent and in camera space
        /// </summary>
        /// <param name="other">The Object to compare against</param>
        /// <returns></returns>
        public int CompareTo(RenderContext other)
        {
            if (RenderType == Renderer.RenderType.Transparent && other.RenderType == Renderer.RenderType.Transparent)
            {
                if (WorldSpace && other.WorldSpace)
                {
                    float d = MVPosition.LengthSquared - other.MVPosition.LengthSquared;
                    if (d > 0)
                    {
                        return(1);
                    }

                    return(-1);
                }

                if (WorldSpace) // && !other.WorldSpace
                {
                    return(-1);
                }

                if (other.WorldSpace) // && !WorldSpace
                {
                    return(1);
                }

                //If !WorldSpace && !other.WorldSpace

                int ret = RenderQueue.CompareTo(other.RenderQueue);
                return(ret);
            }

            if (other.RenderType == Renderer.RenderType.Transparent) //&& RenderType != Renderer.RenderType.Transparent
            {
                return(1);
            }

            if (RenderType == Renderer.RenderType.Transparent) //&& other.RenderType != Renderer.RenderType.Transparent
            {
                return(-1);
            }

            //if other.RenderType != Renderer.RenderType.Transparent && RenderType != Renderer.RenderType.Transparent
            //Let z buffer do the ordering
            return(0);
        }
Exemplo n.º 2
0
        /// <summary>
        /// CompareTo Implementation
        /// If both transparent and in camera space
        /// </summary>
        /// <param name="other">The Object to compare against</param>
        /// <returns></returns>
        private int CmpTo(RenderingComponent other)
        {
            if (RenderType == Renderer.RenderType.Transparent && other.RenderType == Renderer.RenderType.Transparent)
            {
                if (WorldSpace && other.WorldSpace)
                {
                    float d = MvPosition.LengthSquared - other.MvPosition.LengthSquared;
                    if (d > 0)
                    {
                        return(1);
                    }

                    return(-1);
                }

                if (WorldSpace) // && !other.WorldSpace
                {
                    return(-1);
                }

                if (other.WorldSpace) // && !WorldSpace
                {
                    return(1);
                }


                int ret = RenderQueue.CompareTo(other.RenderQueue);
                return(ret);
            }

            if (other.RenderType == Renderer.RenderType.Transparent)
            {
                return(1);
            }

            if (RenderType == Renderer.RenderType.Transparent)
            {
                return(-1);
            }

            return(0);
        }