/// <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); }
/// <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); }