//----------------------------------------------------------------------------------
	//
	//----------------------------------------------------------------------------------
	void CoreLayer2D_Imp::EndUpdating(bool isUpdated)
	{
		if (isUpdated)
		{
			m_renderer->GetEffectManager()->Update(core->GetDeltaTime() / (1.0f / 60.0f));
			m_renderer->GetEffectManager()->Flip();
		}
		
#if __CULLING_2D__
		//グリッド更新処理
		{
			for (auto x : transformedObjects)
			{
				auto userData = (Culling2DUserData*)(x->GetUserData());

				if (userData->IsObject)
				{
					auto impObj = CoreObject2DToImp(userData->Object);
					impObj->CalculateBoundingCircle();
					auto newCircle = impObj->GetBoundingCircle();
					x->SetCircle(newCircle);
				}
				else
				{
					auto impObj = CoreObject2DToImp(userData->Object);
					auto chip = (CoreChip2D_Imp*)userData->Chip;
					auto newCircle = chip->GetBoundingCircle();
					x->SetCircle(newCircle);
				}
			}

			world->Update();

			transformedObjects.clear();
		}
#endif
	}
	void CoreGeometryObject2D_Imp::CalculateBoundingCircle()
	{
		auto shape_Imp = CoreShape2DToImp(m_shape);
		if (shape_Imp == nullptr)
		{
			m_boundingCircle = culling2d::Circle(culling2d::Vector2DF(), 0);
			return;
		}

		m_boundingCircle = shape_Imp->GetBoundingCircle();

		std::array<Vector2DF, 4> position;

		auto p1 = m_boundingCircle.Position - culling2d::Vector2DF(m_boundingCircle.Radius, 0);
		position[0] = Vector2DF(p1.X, p1.Y);

		auto p2 = m_boundingCircle.Position + culling2d::Vector2DF(m_boundingCircle.Radius, 0);
		position[1] = Vector2DF(p2.X, p2.Y);

		auto p3 = m_boundingCircle.Position - culling2d::Vector2DF(0, m_boundingCircle.Radius);
		position[2] = Vector2DF(p3.X, p3.Y);

		auto p4 = m_boundingCircle.Position + culling2d::Vector2DF(0, m_boundingCircle.Radius);
		position[3] = Vector2DF(p4.X, p4.Y);

		auto parentMatrix = GetParentsMatrix();
		auto matrix = GetMatrixToTransform();

		Vector2DF sum = Vector2DF();
		for (auto& pos : position)
		{
			pos -= centerPosition;
			auto v3 = Vector3DF(pos.X, pos.Y, 1);
			auto result = parentMatrix * matrix * v3;
			pos = Vector2DF(result.X, result.Y);
			sum += pos;
		}

		auto c = sum / 4.0f;
		auto r = 0.0f;

		for (auto& pos : position)
		{
			r = Max(r, (pos - c).GetLength());
		}

		m_boundingCircle = culling2d::Circle(culling2d::Vector2DF(c.X, c.Y), r);
	}