示例#1
0
int PortalManager::AddPortal(int xLoc, int yLoc, float angle)
{

    if(portalList.size()==0)
        portalList.push_back(Portal(xLoc, yLoc, angle, portalList.size()));
    else if(portalList.size()==1)
        portalList.push_back(Portal(xLoc, yLoc, angle, portalList.size()-1));
    else if(portalList.size()%2 == 0)
        portalList.push_back(Portal(xLoc, yLoc, angle, portalList.size()));
    else
        portalList.push_back(Portal(xLoc, yLoc, angle, portalList.size()-1));
}
示例#2
0
shared_ptr<Portal> PortalsSystem::_loadPortal(const String &path, bool recovery, bool start)
{
	try
	{
		shared_ptr<Portal> portal(OS_NEW Portal(getPeersCacheSize(), getDatabasesCacheSize()));
		if(_initPortal(portal, path, recovery, start) == false)
			return nullptr;

		/*
		if(getPortal(portal->getPortalID()) != nullptr)
			return false;
		*/
		if(getPortalByFullPov(portal->getFullPovID()) != nullptr)
			return nullptr;

		m_portals.push_back(portal);
		return portal;
	}
	catch(std::exception &e)
	{
		OS_LOG_ERROR(e.what());
	}
	catch(...)
	{
		OS_LOG_ERROR(_S("Unknown error loading portal '") + path + _S("'"));
	}

	return nullptr;
}
	// Create a portal instance
	Portal* PCZSceneManager::createPortal(const String& name, PortalBase::PORTAL_TYPE type)
	{
		Portal* newPortal = OGRE_NEW Portal(name, type);
		newPortal->_notifyCreator(Root::getSingleton().getMovableObjectFactory("Portal"));
		newPortal->_notifyManager(this);
		mPortals.push_front(newPortal);
		return newPortal;
	}
示例#4
0
Portal PortalManager::GetExitPortal(Portal enterPortal)
{
    for(int i = 0; i<portalList.size();i++)
    {
        if(portalList[i].ident == enterPortal.ident && portalList[i].portalPosition.x != enterPortal.portalPosition.x)
            return portalList[i];
    }

    return Portal(0, 0, 0, -1);
}
示例#5
0
Portal PortalManager::GetPortalAt(int xLoc, int yLoc)
{
    for(int i = 0;i<portalList.size();i++)
    {
        if(xLoc >= portalList[i].portalPosition.x-32 && xLoc <= portalList[i].portalPosition.x+32 && yLoc >= portalList[i].portalPosition.y-32 && yLoc <= portalList[i].portalPosition.y+32)
            return portalList[i];
    }

    return Portal(0, 0, 0, -1);
}
示例#6
0
bool MainApp::init(){
	useOcclusionQueries = true;

	char fileName[] = "room0.hmdl";
	unsigned int i;

	OpenGLModel *rooms[5];

	for (i = 0; i < 5; i++){
		fileName[4] = '0' + i;

		rooms[i] = new OpenGLModel();
		rooms[i]->loadFromFile(fileName);
	}

	mat4 matr0(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);
	matr0.translate(vec3(0, 256, 0));

	mat4 matr1(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);
	matr1.translate(vec3(-384, 256, 3072));

	mat4 matr2(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);
	matr2.translate(vec3(1536,256,2688));

	mat4 matr3(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);
	matr3.translate(vec3(-1024,-768,2688));

	mat4 matr4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1);
	matr4.translate(vec3(-2304,256,2688));

	for (i = 0; i < rooms[1]->getBatchCount(); i++){
		rooms[0]->getBatch(i)->transform(matr0, ATT_VERTEX);
		rooms[1]->getBatch(i)->transform(matr1, ATT_VERTEX);
		rooms[2]->getBatch(i)->transform(matr2, ATT_VERTEX);
		rooms[3]->getBatch(i)->transform(matr3, ATT_VERTEX);
		rooms[4]->getBatch(i)->transform(matr4, ATT_VERTEX);
	}


	for (i = 0; i < 5; i++)	sectors.add(new Sector(rooms[i]));

	sectors[0]->addPortal(Portal(sectors[1], vec3(-384, 384, 1024), vec3(-128, 384, 1024), vec3(-384, 0, 1024)));
	sectors[1]->addPortal(Portal(sectors[0], vec3(-384, 384, 1024), vec3(-128, 384, 1024), vec3(-384, 0, 1024)));

	sectors[1]->addPortal(Portal(sectors[2], vec3(512, 384, 2816), vec3(512, 384, 3072), vec3(512, 0, 2816)));
	sectors[2]->addPortal(Portal(sectors[1], vec3(512, 384, 2816), vec3(512, 384, 3072), vec3(512, 0, 2816)));

	sectors[2]->addPortal(Portal(sectors[3], vec3(512, -256, 2304), vec3(512, -256, 2560), vec3(512, -640, 2304)));
	sectors[3]->addPortal(Portal(sectors[2], vec3(512, -256, 2304), vec3(512, -256, 2560), vec3(512, -640, 2304)));

	sectors[1]->addPortal(Portal(sectors[4], vec3(-1280, 384, 1664), vec3(-1280, 384, 1920), vec3(-1280, 128, 1664)));
	sectors[4]->addPortal(Portal(sectors[1], vec3(-1280, 384, 1664), vec3(-1280, 384, 1920), vec3(-1280, 128, 1664)));

	sectors[1]->addPortal(Portal(sectors[4], vec3(-1280,  192, 3840), vec3(-1280,  192, 4096), vec3(-1280, -256, 3840)));
	sectors[4]->addPortal(Portal(sectors[1], vec3(-1280,  192, 3840), vec3(-1280,  192, 4096), vec3(-1280, -256, 3840)));


	sectors[0]->addLight(vec3( 0,     128, 0   ), 800,  100, 100, 100);

	sectors[1]->addLight(vec3(-256,   224, 1800), 650,  100, 80,  100);
	sectors[1]->addLight(vec3(-512,   128, 3100), 900,  100, 100, 300);

	sectors[2]->addLight(vec3( 1300,  128, 2700), 800,  100, 100, 200);

	sectors[3]->addLight(vec3(-100,  -700, 2432), 600,  50,  50,  50);
	sectors[3]->addLight(vec3(-1450, -700, 2900), 1200, 250, 80,  250);

	sectors[4]->addLight(vec3(-2200,  256, 2300), 800,  100, 100, 100);
	sectors[4]->addLight(vec3(-2000,  0,   4000), 800,  100, 100, 100);

	return true;
}