Exemple #1
0
void LibraryPanel::InitPages(StagePanel* stage, ee::PropertySettingPanel* property) 
{
	auto paste_op = std::make_shared<ee::PasteSymbolOP>(stage, stage->GetStageImpl(), this);

	ee::OneFloatValue* capture_val = new ee::OneFloatValueStatic(10);
	auto draw_line_op = std::make_shared<eshape::EditPolylineOP<eshape::DrawPenLineOP, ee::SelectShapesOP>>(
		stage, stage->GetStageImpl(), stage, property, capture_val, NULL);
	auto draw_poly_op = std::make_shared<eshape::EditPolylineOP<eshape::DrawPolygonOP, ee::SelectShapesOP>>(
		stage, stage->GetStageImpl(), stage, property, capture_val, NULL);

	int id = 0;
	{
		LibraryPage* page = new LibraryPage(this, "地形", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
		m_terrain_page = page;
	}
	{
		LibraryPage* page = new LibraryPage(this, "装饰", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_AUTO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
	}
	{
		LibraryPage* page = new LibraryPage(this, "单位", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_AUTO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
		m_unit_page = page;
	}
	{
		LibraryPage* page = new LibraryPage(this, "点", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
	}
	{
		LibraryPage* page = new LibraryPage(this, "路径", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(draw_line_op);
		AddPage(page);
		m_path_page = page;
	}
	{
		LibraryPage* page = new LibraryPage(this, "区域", LT_SHAPE, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(draw_poly_op);
		AddPage(page);
	}
	{
		LibraryPage* page = new LibraryPage(this, "碰撞区域", LT_SHAPE, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(draw_poly_op);
		page->AddEditOP(draw_line_op);
		AddPage(page);
		m_collision_page = page;
	}
	{
		LibraryPage* page = new LibraryPage(this, "摄像机", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
	}
	{
		LibraryPage* page = new LibraryPage(this, "关卡", LT_DEFAULT, id++, pt2::CM_PERSPECTIVE_NO_HEIGHT);
		Layer* layer = page->GetLayer();
		page->AddEditOP(m_stage->GetBaseOP());
		page->AddEditOP(paste_op);
		AddPage(page);
		m_level_page = page;
	}

	std::vector<Layer*> layers;
	for (int i = 0, n = m_pages.size(); i < n; ++i) {
		Layer* layer = static_cast<LibraryPage*>(m_pages[i])->GetLayer();
		layer->AddReference();
		layers.push_back(layer);
	}
	stage->SetLayers(layers);
}