private static void EndRenderingImpl(TreeManager tm, RenderManager.CameraInfo cameraInfo)
		{
			unsafe
			{
				if (Input.GetKeyDown(KeyCode.F5) && Event.current.control)
				{
					DebugOutputPanel.AddMessage(PluginManager.MessageType.Message, string.Format("TreeLimit: TreeCount={0}, TreeLimit={1}, CanPlaceMoreTrees={2}", tm.m_treeCount, LimitTreeManager.Helper.TreeLimit, tm.CheckLimits()));
					Array32<TreeInstance> mTrees = tm.m_trees;
					DebugOutputPanel.AddMessage(PluginManager.MessageType.Message, string.Format("TreeLimit: ArraySize={0}, ItemCount={1}, UnusedCount={2}", mTrees.m_size, mTrees.ItemCount(), mTrees.GetType().GetField("m_unusedCount", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(mTrees)));
				}
				FastList<RenderGroup> mRenderedGroups = Singleton<RenderManager>.instance.m_renderedGroups;
				for (int i = 0; i < mRenderedGroups.m_size; i++)
				{
					RenderGroup mBuffer = mRenderedGroups.m_buffer[i];
					if ((mBuffer.m_instanceMask & 1 << (tm.m_treeLayer & 31)) != 0)
					{
						int mX = mBuffer.m_x * 540 / 45;
						int mZ = mBuffer.m_z * 540 / 45;
						int num = (mBuffer.m_x + 1) * 540 / 45 - 1;
						int mZ1 = (mBuffer.m_z + 1) * 540 / 45 - 1;
						for (int j = mZ; j <= mZ1; j++)
						{
							for (int k = mX; k <= num; k++)
							{
								uint mTreeGrid = tm.m_treeGrid[j * 540 + k];
								int num1 = 0;
								while (mTreeGrid != 0)
								{
									tm.m_trees.m_buffer[mTreeGrid].RenderInstance(cameraInfo, mTreeGrid, mBuffer.m_instanceMask);
									mTreeGrid = tm.m_trees.m_buffer[mTreeGrid].m_nextGridTree;
									int num2 = num1 + 1;
									num1 = num2;
									if (num2 < LimitTreeManager.Helper.TreeLimit)
									{
										continue;
									}
									CODebugBase<LogChannel>.Error(LogChannel.Core, string.Concat("Invalid list detected!\n", Environment.StackTrace));
									break;
								}
							}
						}
					}
				}
				int num3 = PrefabCollection<TreeInfo>.PrefabCount();
				for (int l = 0; l < num3; l++)
				{
					TreeInfo prefab = PrefabCollection<TreeInfo>.GetPrefab((uint)l);
					if (prefab != null && prefab.m_lodCount != 0)
					{
						TreeInstance.RenderLod(cameraInfo, prefab);
					}
				}
			}
		}