void FDetailCategoryImpl::RequestItemExpanded( TSharedRef<IDetailTreeNode> TreeNode, bool bShouldBeExpanded )
{
	TSharedPtr<FDetailLayoutBuilderImpl> DetailLayoutBuilderPtr = DetailLayoutBuilder.Pin();
	if( DetailLayoutBuilderPtr.IsValid() )
	{
		GetDetailsView().RequestItemExpanded( TreeNode, bShouldBeExpanded );
	}
}
void FDetailCategoryImpl::RefreshTree( bool bRefilterCategory )
{
	TSharedPtr<FDetailLayoutBuilderImpl> DetailLayoutBuilderPtr = DetailLayoutBuilder.Pin();
	if( DetailLayoutBuilderPtr.IsValid() )
	{
		if( bRefilterCategory )
		{
			FilterNode( DetailLayoutBuilderPtr->GetCurrentFilter() );
		}

		GetDetailsView().RefreshTree();
	}
}
void FDetailLayoutBuilderImpl::BuildCategories( const FCategoryMap& CategoryMap, TArray< TSharedRef<FDetailCategoryImpl> >& OutSimpleCategories, TArray< TSharedRef<FDetailCategoryImpl> >& OutAdvancedCategories )
{
	for( FCategoryMap::TConstIterator It(CategoryMap); It; ++It )
	{
		TSharedRef<FDetailCategoryImpl> DetailCategory = It.Value().ToSharedRef();

		const bool bCategoryHiddenByClass = GetDetailsView().IsCategoryHiddenByClass( DetailCategory->GetCategoryName() );

		if( !bCategoryHiddenByClass )
		{
			DetailCategory->GenerateLayout();

			if( DetailCategory->ContainsOnlyAdvanced() )
			{
				OutAdvancedCategories.Add( DetailCategory );
			}
			else
			{
				OutSimpleCategories.Add( DetailCategory );
			}
		}
	}
}