/// <summary>
        ///		Clears all the priority groups within this group.
        /// </summary>
        public void Clear()
        {
            // loop through each priority group and clear it's items.  We don't wanna clear the group
            // list because it probably won't change frame by frame.
            for (int i = 0; i < priorityGroups.Count; i++)
            {
                RenderPriorityGroup group = (RenderPriorityGroup)priorityGroups[i];

                // clear the RenderPriorityGroup
                group.Clear();
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <param name="priority"></param>
        public void AddRenderable(IRenderable item, ushort priority)
        {
            RenderPriorityGroup group = null;

            // see if there is a current queue group for this group id
            if (!priorityGroups.ContainsKey(priority))
            {
                // create a new queue group for this group id
                group = new RenderPriorityGroup(splitPassesByLightingType, splitNoShadowPasses,
                                                splitPassesByLightingType);

                // add the new group to cached render group
                priorityGroups.Add(priority, group);
            }
            else
            {
                // retreive the existing queue group
                group = (RenderPriorityGroup)priorityGroups.GetByKey(priority);
            }

            // add the renderable to the appropriate group
            group.AddRenderable(item);
        }
		/// <summary>
		/// </summary>
		public void AddRenderable( IRenderable item, Technique technique, ushort priority )
		{
			RenderPriorityGroup group = null;

			// see if there is a current queue group for this group id
			if ( !PriorityGroups.ContainsKey( priority ) )
			{
				// create a new queue group for this group id
				group = new RenderPriorityGroup( this, this.splitPassesByLightingType, this.splitNoShadowPasses,
				                                 this.splitPassesByLightingType );

				// add the new group to cached render group
				PriorityGroups.Add( priority, group );
			}
			else
			{
				// retreive the existing queue group
				group = PriorityGroups[ priority ];
			}

			// add the renderable to the appropriate group
			group.AddRenderable( item, technique );
		}