Exemplo n.º 1
0
        void testGetPoint()
        {
            FTTesselation tesselation(1);

            CPPUNIT_ASSERT(tesselation.PointCount() == 0);

            tesselation.AddPoint(10, 3, 0.7);
            tesselation.AddPoint(-53, 2000, 23);
            tesselation.AddPoint(77, -2.4, 765);
            tesselation.AddPoint(117.5,  0.02, -99);

            CPPUNIT_ASSERT(tesselation.PointCount() == 4);
            CPPUNIT_ASSERT(tesselation.Point(2) == FTPoint(77, -2.4, 765));
            CPPUNIT_ASSERT(tesselation.Point(20) != FTPoint(77, -2.4, 765));
        }
Exemplo n.º 2
0
        void testAddPoint()
        {
            FTTesselation tesselation(1);

            CPPUNIT_ASSERT(tesselation.PointCount() == 0);

            tesselation.AddPoint(10, 3, 0.7);
            tesselation.AddPoint(-53, 2000, 23);
            tesselation.AddPoint(77, -2.4, 765);
            tesselation.AddPoint(117.5,  0.02, -99);

            CPPUNIT_ASSERT(tesselation.PointCount() == 4);

            tesselation.AddPoint(10, 3, -0.87);
            tesselation.AddPoint(117.5, 0.02, 34.76);
            tesselation.AddPoint(0.27, 44.4, 3000);
            tesselation.AddPoint(10, 3, 0);

            CPPUNIT_ASSERT(tesselation.PointCount() == 8);
        }
Exemplo n.º 3
0
	size_t FadeNodeAnimator::animate(
		bool _update,
		size_t _quad_count,
		MyGUI::VectorQuadData& _data,
		float _time,
		MyGUI::IVertexBuffer* _buffer,
		MyGUI::ITexture* _texture,
		const MyGUI::RenderTargetInfo& _info,
		const MyGUI::IntCoord& _coord,
		bool& _isAnimate
	)
	{

		addTime(_time);

		if (mDestroy && mAlpha == 0)
		{
			return _quad_count;
		}

		_isAnimate = true;

		_quad_count = tesselation(
			_quad_count,
			_data,
			_texture,
			_info,
			_coord);

		size_t index = 0;
		switch (mFadeType)
		{
		case 0: // random squares
			for (; index < _quad_count; ++index)
			{
				float alpha = pow(mAlpha, mSpeed[index]);

				unsigned int colour = 0xFFFFFF | ((unsigned int)(alpha * 255.0f) << 24);

				_data[index].vertex[MyGUI::QuadData::CornerLT].colour = colour;
				_data[index].vertex[MyGUI::QuadData::CornerRT].colour = colour;
				_data[index].vertex[MyGUI::QuadData::CornerLB].colour = colour;
				_data[index].vertex[MyGUI::QuadData::CornerRB].colour = colour;
			}
			break;
		case 1: // random not-squares
		case 2: // from center
		case 3: // TV
			for (int y = 0; y < getCountY() + 1; ++y)
			{
				for (int x = 0; x < getCountX() + 1; ++x)
				{
					index = x + y * getCountX();
					float speed = 1.0f;
					if (mFadeType == 1) // random not-squares
					{
						speed = (float)mSpeed[index % (getCountX() * getCountY())];
					}
					if (mFadeType == 2) // from center
					{
						float x1 = float(x - getCountX() / 2) / getCountX() * 2;
						float y1 = float(y - getCountY() / 2) / getCountY() * 2;
						speed = sqrt(x1 * x1 + y1 * y1);
					}
					if (mFadeType == 3) // TV
					{
						float x1 = float(x - getCountX() / 2) / getCountX() * 2;
						float y1 = float(y - getCountY() / 2) / getCountY() * 2;
						speed = sqrt(x1 * x1 * x1 * x1 + y1 * y1);
					}
					float alpha = pow(mAlpha, speed);

					unsigned int colour = 0xFFFFFF | ((unsigned int)(alpha * 255.0f) << 24);

					if ( x < getCountX() && y < getCountY() ) _data[index].vertex[MyGUI::QuadData::CornerLT].colour = colour;
					if ( x > 0       && y < getCountY() ) _data[index - 1].vertex[MyGUI::QuadData::CornerRT].colour = colour;
					if ( x < getCountX() && y > 0       ) _data[index - getCountX()].vertex[MyGUI::QuadData::CornerLB].colour = colour;
					if ( x > 0       && y > 0       ) _data[index - getCountX() - 1].vertex[MyGUI::QuadData::CornerRB].colour = colour;
				}
			}
			break;
		}

		return _quad_count;
	}
Exemplo n.º 4
0
	size_t WobbleNodeAnimator::animate(
		bool _update,
		size_t _quad_count,
		MyGUI::VectorQuadData& _data,
		float _time,
		MyGUI::IVertexBuffer* _buffer,
		MyGUI::ITexture* _texture,
		const MyGUI::RenderTargetInfo& _info,
		const MyGUI::IntCoord& _coord,
		bool& _isAnimate
		)
	{
		if (mDestroy)
		{
			return _quad_count;
		}

		// проверяем смещения виджета
		if (mOldCoord.empty())
		{
			mOldCoord = _coord;
		}
		else if (mOldCoord.size() != _coord.size() && mOldCoord.point() != _coord.point())
		{
			mInertiaPoint.set(0.5, 0.5);
			mInertiaMode = false;

			addInertia(MyGUI::FloatPoint(_coord.left-mOldCoord.left, _coord.top-mOldCoord.top));
		}
		else if (mOldCoord.size() != _coord.size())
		{
			mInertiaMode = true;

			addInertia(MyGUI::FloatPoint(_coord.width - mOldCoord.width, _coord.height-mOldCoord.height));
		}
		else if (mOldCoord.point() != _coord.point())
		{
			const MyGUI::IntPoint& point = MyGUI::InputManager::getInstance().getMousePosition();
			mInertiaPoint = MyGUI::FloatPoint((float)(point.left - _coord.left) / (float)_coord.width , (float)(point.top - _coord.top) / (float)_coord.height);
			mInertiaMode = false;

			addInertia(MyGUI::FloatPoint(_coord.left-mOldCoord.left, _coord.top-mOldCoord.top));
		}

		mOldCoord = _coord;

		addTime(_time);

		bool anim_update = squaredLength(mDragOffset) >= 0.3f;

		if (!anim_update)
		{
			return _quad_count;
		}

		_isAnimate = true;

		_quad_count = tesselation(
			_quad_count,
			_data,
			_texture,
			_info,
			_coord);

		buildQuadVertex(_data);

		return _quad_count;
	}