Ejemplo n.º 1
0
void OceanLevel::init()
{
    _artifactIndex = indexObject("oceanArtifact");
    if(_artifactIndex >= 0)
    {
        registerGameObject(_artifactIndex, "oceanArtifact");

        vector<std::string> forbiddenPortals(4);
        forbiddenPortals[0] = "portalOcean12_Ocean13";
        forbiddenPortals[1] = "portalOcean13_Ocean12";
        forbiddenPortals[2] = "portalOcean14_Ocean15";
        forbiddenPortals[3] = "portalOcean15_Ocean14";
        registerPortableTraversable(_artifactIndex, level().objects[_artifactIndex].meshInstance, level().physObjects[_artifactIndex], forbiddenPortals);
    }

    SlotArtifact slot0 = createSlotArtifact("slotArtifact0", "reset0", "");
    if(slot0.inst)
        _slots.push_back(slot0);

    SlotArtifact slot1 = createSlotArtifact("slotArtifact1", "reset1", "portalOcean2_Ocean3");
    if(slot1.inst)
        _slots.push_back(slot1);

    SlotArtifact slot2 = createSlotArtifact("slotArtifact2", "reset2", "portalOcean4_Ocean5");
    if(slot2.inst)
        _slots.push_back(slot2);

    SlotArtifact slot3 = createSlotArtifact("slotArtifact3", "reset3", "portalOcean8_Ocean9");
    if(slot3.inst)
        _slots.push_back(slot3);

    SlotArtifact slot4 = createSlotArtifact("slotArtifact4", "reset4", "");
    if(slot4.inst)
        _slots.push_back(slot4);

    SlotArtifact slot5 = createSlotArtifact("slotArtifact5", "reset5", "");
    if(slot5.inst)
        _slots.push_back(slot5);

    SlotArtifact slot6 = createSlotArtifact("slotArtifact6", "", "");
    if(slot6.inst)
        _slots.push_back(slot6);

    for(size_t i=0 ; i<level().objects.size() ; ++i)
    {
        if(level().physObjects[i] && level().objects[i].model == "caisse")
        {
            bindSound(level().physObjects[i], PortalGame::SoundEffects::WOOD3);
        }
        else if(level().physObjects[i] && level().objects[i].name == "oceanArtifact")
        {
            bindSound(level().physObjects[i], PortalGame::SoundEffects::ARTIFACT1);
        }
        else if(level().physObjects[i] && level().objects[i].model == "palmLog")
        {
            bindSound(level().physObjects[i], PortalGame::SoundEffects::WOOD1);
        }
    }
}
Ejemplo n.º 2
0
void GameLevel2D::addGameObject(GameObject::Ptr obj)
{
	if(_GameObjects.count(obj->getName()) == 0)
	{
		_GameObjects.insert(std::make_pair(obj->getName(),obj));
		if(this->_Initialized)
		{
			registerGameObject(obj);
		}
	}
}
Ejemplo n.º 3
0
void GameLevel2D::initialise()
{
	if(_Initialized)
	{
		return;
	}

	// initializing physics and collision
	_CollisionConfiguration = boost::shared_ptr<btCollisionConfiguration>(
			new btDefaultCollisionConfiguration());
	_BroadphaseInterface = boost::shared_ptr<btBroadphaseInterface>(new btDbvtBroadphase());
	_CollisionDispatcher = boost::shared_ptr<btCollisionDispatcher>(new btCollisionDispatcher(_CollisionConfiguration.get()));
	_ConstraintSolver = boost::shared_ptr<btConstraintSolver>(new btSequentialImpulseConstraintSolver());
	_DynamicsWorld = boost::shared_ptr<btDiscreteDynamicsWorld>(new btDiscreteDynamicsWorld(_CollisionDispatcher.get(),
			_BroadphaseInterface.get(),
			_ConstraintSolver.get(),
			_CollisionConfiguration.get()));

	// setting dynamic simulation properties
	_DynamicsWorld->getSolverInfo().m_numIterations = _SolverIterations;
	_DynamicsWorld->getSolverInfo().m_solverMode = _SolverMode;
	_DynamicsWorld->getDispatchInfo().m_enableSPU = _EnableSpu;
	_DynamicsWorld->setGravity(_Gravity);

	// initialize collision object
	_CollisionShape = boost::shared_ptr<btCollisionShape>(new btStaticPlaneShape(btVector3(0.0f,1.0f,0.0f),0.0f));
	//_MotionState = new GameMotionState(_Transform,_SceneNode); // not sure if null motion state can be used for static objects

	// rigid body
	btRigidBody::btRigidBodyConstructionInfo consInfo(_Mass,NULL,_CollisionShape.get(),_Inertia);
	_RigidBody = boost::shared_ptr<btRigidBody>(new btRigidBody(consInfo));

	// scene node
	_SceneNode = StateManager::getSingleton()->getParentSceneNode()->createChildSceneNode(_Name,
			OgreBulletConversions::convertBulletVec3ToOgreVec3(_Transform.getOrigin()),
			OgreBulletConversions::convertBulletQuatToOgreQuat(_Transform.getRotation()));
	// create plane here;

	// initializing objects
	for(std::map<std::string,GameObject::Ptr>::iterator i = _GameObjects.begin(); i != _GameObjects.end(); i++)
	{
		registerGameObject(i->second);
	}

	_Initialized = true;
}