virtual bool	Setup(Pint& pint, const PintCaps& caps)
	{
		if(!CylinderTest::Setup(pint, caps))
			return false;

		const bool UseConvexes = mCheckBox_UseConvexesForAll ? mCheckBox_UseConvexesForAll->IsChecked() : false;

		Matrix3x3 M;
		M.RotX(HALFPI);
		const Quat R = M;

		udword Nb = 14;

		const float Radius = mCylinder.mRadius;
		const float HalfHeight = mCylinder.mHalfHeight;
		float Altitude = mCylinder.mRadius;
		float OffsetX = 0.0f;
		while(Nb)
		{
			for(udword i=0;i<Nb;i++)
			{
				if(!caps.mSupportCylinders || UseConvexes)
				{
					PINT_CONVEX_CREATE ConvexCreate(mCylinder.mNbVerts, mCylinder.mVerts);
					ConvexCreate.mRenderer	= GetRegisteredRenderers()[0];
					PintObjectHandle Handle = CreateDynamicObject(pint, &ConvexCreate, Point(OffsetX + float(i)*Radius*2.2f, Altitude, 0.0f), &R);
					ASSERT(Handle);
				}
				else
				{
					PINT_CYLINDER_CREATE CylinderCreate(mCylinder.mRadius, mCylinder.mHalfHeight);
					CylinderCreate.mRenderer	= GetRegisteredRenderers()[1];
//					const Quat Q = ShortestRotation(Point(0.0f, 1.0f, 0.0f), Point(0.0f, 0.0f, 1.0f));
					PintObjectHandle Handle = CreateDynamicObject(pint, &CylinderCreate, Point(OffsetX + float(i)*Radius*2.2f, Altitude, 0.0f)/*, &R*/);
					ASSERT(Handle);
				}
			}
			Nb--;
			Altitude += HalfHeight*2.0f+0.01f;
			OffsetX += Radius*1.1f;
		}
		return true;
	}
Esempio n. 2
0
void FileManager::LoadDynamicObjects(int levelNum)
{
	_camX=-1;_camY=-1;	
	std::string temp;
	std::vector<std::string> levelVector = LoadLevelFile(levelNum);
	std::vector<std::string>::iterator stringIter;
	std::vector<std::string>::iterator stringIter2;

	const int *tileSize = LoadLevelProperties(levelNum);

	const int tileWidth = tileSize[0];
	const int tileHeight = tileSize[1];

	temp="";

	for(stringIter = levelVector.begin(); stringIter!=levelVector.end(); stringIter++)
	{
		if((*stringIter) == "[map]")
		{
			int x=0,y=0;
			std::string temp;
			for(stringIter2 = stringIter+1; stringIter2!=levelVector.end(); stringIter2++)
			{
				if((*stringIter2) == ";")
					break;
				else
				{
					for(unsigned int i=0; i<(*stringIter2).size(); i++)
					{
						if((*stringIter2)[i] != ' ' && (*stringIter2)[i] != '|')
							temp += (*stringIter2)[i];
						else
						{
							if(temp=="--")
							{
								y--;
								temp="";
								break;
							}
							CreateDynamicObject(temp, x*tileWidth, y*tileHeight);
							x++;
							temp="";
						}
					}
					y++;
					x=0;
				}
			}
		}
		else if((*stringIter) == "END")
			break;
	}
}
	virtual bool	Setup(Pint& pint, const PintCaps& caps)
	{
		if(!CylinderTest::Setup(pint, caps))
			return false;

		// Create ramp
		{
			Matrix3x3 M;
			M.RotZ(-0.2f);
			const Quat R = M;

			PINT_BOX_CREATE BoxDesc(10.0f, 1.0f, 10.0f);
			BoxDesc.mRenderer	= CreateBoxRenderer(BoxDesc.mExtents);
			PintObjectHandle Handle = CreateStaticObject(pint, &BoxDesc, Point(0.0f, 0.0f, 0.0f), &R);
			ASSERT(Handle);
		}

		const bool UseConvexes = mCheckBox_UseConvexesForAll ? mCheckBox_UseConvexesForAll->IsChecked() : false;

		if(!caps.mSupportCylinders || UseConvexes)
		{
			// Create cylinder as a convex object
			PINT_CONVEX_CREATE ConvexCreate(mCylinder.mNbVerts, mCylinder.mVerts);
			ConvexCreate.mRenderer	= GetRegisteredRenderers()[0];
			PintObjectHandle Handle = CreateDynamicObject(pint, &ConvexCreate, Point(0.0f, mCylinder.mRadius+2.0f, 0.0f));
			ASSERT(Handle);
		}
		else
		{
			PINT_CYLINDER_CREATE CylinderCreate(mCylinder.mRadius, mCylinder.mHalfHeight);
			CylinderCreate.mRenderer	= GetRegisteredRenderers()[1];
			const Quat Q = ShortestRotation(Point(0.0f, 1.0f, 0.0f), Point(0.0f, 0.0f, 1.0f));
			PintObjectHandle Handle = CreateDynamicObject(pint, &CylinderCreate, Point(0.0f, mCylinder.mRadius+2.0f, 0.0f), &Q);
			ASSERT(Handle);
		}
		return true;
	}
Esempio n. 4
0
House::House(HouseInfo& info) : info(info)
{
	areaid = CreateDynamicCube(info.lx, info.ly, info.lz, info.mx, info.my, info.mz, -1, -1, -1);
	GameServer::getInstance().areamanager.registerArea(areaid,
	[info](const std::shared_ptr<Account>& player) {
		if (player->getUserID() == info.ownerid)
		{
			SendClientMessage(player->getInGameID(), 0xFFFFFFFF, STR("[House] 欢迎来到你的房产 " << info.name).c_str());
		}
		else
		{
			SendClientMessage(player->getInGameID(), 0xFFFFFFFF, STR("[House] 你正在进入限制区域 " << info.name << " 请输入密码").c_str());
			showHouseAuthDialog(player, GameServer::getInstance().housemanager.findHouse(info.houseid));
		}
	});
	zoneid = GangZoneCreate(info.lx, info.ly, info.mx, info.my);
	signid = CreateDynamicObject(3337, info.ex, info.ey, info.ez, 0.0f, 0.0f, info.rotation, -1, -1, -1, 200.0f, 200.0f);
	SetDynamicObjectMaterialText(signid, 1, info.name.c_str(), OBJECT_MATERIAL_SIZE_256x128, "Arial", 32, 1, 0xFFFFFFFF, 0xFF003366, 1);
	init();
}