示例#1
0
	//----------------------------------------------------------------------------------------------------
	bool EEProgressbar::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isPositionDirty)
		{
			m_isPositionDirty = false;
		}

		if (m_isScaleDirty || m_isLocalZOrderDirty || m_isProgressDirty)
		{
			Rect_Float rect(
				-m_quadWidth / 2,
				-m_quadHeight / 2,
				m_quadWidth / 2,
				m_quadHeight / 2
				);

			//the value of the z depends on the progress (the scaled end - the scaled width * (1.0f - the progress)
			rect.z -= (rect.z - rect.x) * (1.0f - m_progress);

			EEQuad2DVertex vertices[4];
			vertices[0].pos = FLOAT3(rect.x, rect.y, m_localZOrder * 0.0001f);
			vertices[0].tex = FLOAT2(0, 0);
			vertices[1].pos = FLOAT3(rect.z, rect.y, m_localZOrder * 0.0001f);
			vertices[1].tex = FLOAT2(m_progress, 0);
			vertices[2].pos = FLOAT3(rect.x, rect.w, m_localZOrder * 0.0001f);
			vertices[2].tex = FLOAT2(0, 1);
			vertices[3].pos = FLOAT3(rect.z, rect.w, m_localZOrder * 0.0001f);
			vertices[3].tex = FLOAT2(m_progress, 1);

			ID3D11DeviceContext *deviceContext = EECore::s_EECore->GetDeviceContext();
			D3D11_MAPPED_SUBRESOURCE mappedResource;
			ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));
			deviceContext->Map(m_quadVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
			memcpy(mappedResource.pData, vertices, sizeof(vertices));
			deviceContext->Unmap(m_quadVB, 0);

			if (m_isProgressDirty)
			{
				if (m_callbackFunc)
				{
					m_callbackFunc(m_progress);
				}
			}

			m_isScaleDirty = false;
			m_isLocalZOrderDirty = false;
			m_isProgressDirty = false;
		}

		m_progressFrame.Update();

		return true;
	}
示例#2
0
	//----------------------------------------------------------------------------------------------------
	bool EECurve2D::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isPositionDirty)
		{
			m_isPositionDirty = false;
		}

		if (m_isLocalZOrderDirty || m_isCurveDirty)
		{
			std::vector<EECurve2DVertex> vertices(m_curve.size() << 1);
			if (m_curve.size() > 1)
			{
				float halfWidth = m_width / 2;
				float deltaTex = 1.f / m_curve.size();
				for (unsigned int i = 0; i < m_curve.size() - 1; ++i)
				{
					int index = i << 1;
					FLOAT2 vertical = (m_curve[i + 1] - m_curve[i]).GetVertical();
					vertices[index].pos = FLOAT3(m_curve[i] + vertical * halfWidth, m_localZOrder * 0.0001f);
					vertices[index].tex = FLOAT2(m_texRect.x, m_texRect.y + i * deltaTex);
					vertices[index + 1].pos = FLOAT3(m_curve[i] - vertical * halfWidth, m_localZOrder * 0.0001f);
					vertices[index + 1].tex = FLOAT2(m_texRect.z, m_texRect.y + i * deltaTex);
				}
				FLOAT2 vertical = (m_curve[m_curve.size() - 1] - m_curve[m_curve.size() - 2]).GetVertical();
				vertices[vertices.size() - 2].pos = FLOAT3(m_curve.back() + vertical * halfWidth, m_localZOrder * 0.0001f);
				vertices[vertices.size() - 2].tex = FLOAT2(m_texRect.x, m_texRect.w);
				vertices[vertices.size() - 1].pos = FLOAT3(m_curve.back() - vertical * halfWidth, m_localZOrder * 0.0001f);
				vertices[vertices.size() - 1].tex = FLOAT2(m_texRect.z, m_texRect.w);
			}

			if (m_isCurveDirty)
				CreateCurveVertexBuffer();
			if (m_curveVB)
			{
				ID3D11DeviceContext *deviceContext = EECore::s_EECore->GetDeviceContext();
				D3D11_MAPPED_SUBRESOURCE mappedResource;
				ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));
				deviceContext->Map(m_curveVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
				memcpy(mappedResource.pData, &vertices[0], sizeof(EECurve2DVertex)* vertices.size());
				deviceContext->Unmap(m_curveVB, 0);
			}

			m_isLocalZOrderDirty = false;
			m_isCurveDirty = false;
		}

		return true;
	}
示例#3
0
	//----------------------------------------------------------------------------------------------------
	bool EECylinder::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isScaleDirty)
		{
			CreateCylinderBuffer();

			m_isScaleDirty = false;
		}

		return true;
	}
示例#4
0
	//----------------------------------------------------------------------------------------------------
	bool EEPolyhedron::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isScaleDirty)
		{
			//CreatePolyhedronBuffer();

			m_isScaleDirty = false;
		}

		return true;
	}
示例#5
0
	//----------------------------------------------------------------------------------------------------
	bool EEQuad2D::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isPositionDirty)
		{
			m_isPositionDirty = false;
		}

		if (m_isScaleDirty || m_isLocalZOrderDirty || m_isTexRectDirty)
		{
			Rect_Float rect(
				-m_quadWidth / 2,
				-m_quadHeight / 2,
				m_quadWidth / 2,
				m_quadHeight / 2
				);

			EEQuad2DVertex quadVertices[4];
			quadVertices[0].pos = FLOAT3(rect.x, rect.y, m_localZOrder * 0.0001f);
			quadVertices[0].tex = FLOAT2(m_texRect.x, m_texRect.y);
			quadVertices[1].pos = FLOAT3(rect.z, rect.y, m_localZOrder * 0.0001f);
			quadVertices[1].tex = FLOAT2(m_texRect.z, m_texRect.y);
			quadVertices[2].pos = FLOAT3(rect.x, rect.w, m_localZOrder * 0.0001f);
			quadVertices[2].tex = FLOAT2(m_texRect.x, m_texRect.w);
			quadVertices[3].pos = FLOAT3(rect.z, rect.w, m_localZOrder * 0.0001f);
			quadVertices[3].tex = FLOAT2(m_texRect.z, m_texRect.w);

			ID3D11DeviceContext *deviceContext = EECore::s_EECore->GetDeviceContext();
			D3D11_MAPPED_SUBRESOURCE mappedResource;
			ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));
			deviceContext->Map(m_quadVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
			memcpy(mappedResource.pData, quadVertices, sizeof(quadVertices));
			deviceContext->Unmap(m_quadVB, 0);

			m_isScaleDirty = false;
			m_isLocalZOrderDirty = false;
			m_isTexRectDirty = false;
		}

		return true;
	}
示例#6
0
	//----------------------------------------------------------------------------------------------------
	bool EEPoints2D::Update()
	{
		if (!EEObject::Update())
			return false;

		UpdateObjectState();

		if (m_isPositionDirty)
		{
			m_isPositionDirty = false;
		}

		if (m_isScaleDirty || m_isLocalZOrderDirty || m_isPointsDirty)
		{
			std::vector<EEPoints2DVertex> vertices(m_points.size());
			for (unsigned int i = 0; i < m_points.size(); ++i)
			{
				vertices[i].pos = FLOAT3(m_points[i], m_localZOrder * 0.0001f);
			}

			if (m_isPointsDirty)
				CreatePointsVertexBuffer();
			ID3D11DeviceContext *deviceContext = EECore::s_EECore->GetDeviceContext();
			D3D11_MAPPED_SUBRESOURCE mappedResource;
			ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));
			deviceContext->Map(m_pointsVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
			memcpy(mappedResource.pData, &vertices[0], vertices.size() * sizeof(EEPoints2DVertex));
			deviceContext->Unmap(m_pointsVB, 0);

			m_isScaleDirty = false;
			m_isLocalZOrderDirty = false;
			m_isPointsDirty = false;
		}

		return true;
	}