예제 #1
0
bool Game::initialize() {
	if( !initializeOgre() )
		return false;

	if( !initializeCEGUI() )
		return false;

	if( !initializeOIS() )
		return false;

	if( !initializeBullet() )
		return false;

	//create the plane in Ogre3D
	Ogre::Plane plane(Ogre::Vector3::UNIT_Z, -15);
	Ogre::MeshManager::getSingleton().createPlane("ground", "meshes", plane, 1500, 1500, 20, 20, true, 1, 5, 5, Ogre::Vector3::UNIT_Y);
	Ogre::Entity* entGround = m_pScene->createEntity("ground");
	Ogre::SceneNode* groundNode = m_pScene->getRootSceneNode()->createChildSceneNode("groundNode");
	groundNode->attachObject(entGround);
	entGround->setMaterialName("BluePill");

	//create the Bullet ground plane
	m_pGroundShape = new btStaticPlaneShape(btVector3(0, 0, 1), -15);
	m_pGroundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, -1)));
	btRigidBody::btRigidBodyConstructionInfo groundRigidBodyCI(0, m_pGroundMotionState, m_pGroundShape, btVector3(0, 0, 0));
	m_pGroundBody = new btRigidBody(groundRigidBodyCI);
	m_pDynamicsWorld->addRigidBody(m_pGroundBody);

	//create the player in Ogre3D
	Ogre::String meshname = "Pill.mesh";
	Ogre::Entity* entity = m_pScene->createEntity(meshname);
	m_pPlayerSceneNode = m_pRootSceneNode->createChildSceneNode();
	m_pPlayerSceneNode->attachObject(entity);
	m_pPlayerSceneNode->scale(Ogre::Vector3(0.5f, 0.5f, 0.5f));
	m_PlayerPosition = Ogre::Vector3(0.0f, 0.0f, -10.0f);
	m_PlayerVelocity = Ogre::Vector3(0.0f, 0.0f, 0.0f);
	m_pPlayerSceneNode->translate(m_PlayerPosition);

	//create the Bullet player
	m_pPlayerShape = new btBoxShape(btVector3(1,1,1));
	m_pPlayerMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, -10)));
	btScalar playerMass = 1;
	btVector3 playerInertia(0, 0, 0);
	m_pPlayerShape->calculateLocalInertia(playerMass, playerInertia);
	btRigidBody::btRigidBodyConstructionInfo playerRigidBodyCI(playerMass, m_pPlayerMotionState, m_pPlayerShape, playerInertia);
	m_pPlayerBody = new btRigidBody(playerRigidBodyCI);
	//body->setRestitution(1);
	m_pPlayerBody->setUserPointer(m_pPlayerSceneNode);
	m_pDynamicsWorld->addRigidBody(m_pPlayerBody);

	return true;
}//Game::initialize
예제 #2
0
void Application::initialize()
{
    initializeOgre();
    initializeOISB();
    initializeCEGUI();
}
예제 #3
0
void GameCore::startOgre()
{
    reader=new ConfigReader(gameConfigFile);
    if(reader->readFile())
    {
        writer=new ConfigWriter(gameConfigFile);
        writer->importConfigReader(reader);
        reader->pushConfigFile("GameSettings");
        std::string pluginsConfig = reader->getFieldValueAsString("ConfigFiles", "plugins-configfile");
        std::string resourcesConfig = reader->getFieldValueAsString("ConfigFiles", "resources-configfile");
        std::string ogreConfig = reader->getFieldValueAsString("ConfigFiles", "ogre-config");
        std::string ogreLogFile = reader->getFieldValueAsString("LogFiles", "ogre-logfile");
        std::string gameLogFile = reader->getFieldValueAsString("LogFiles", "game-logfile");

        serverTcpPort= reader->getFieldValueAsInteger("NetworkSettings", "tcp-port");
        ttftpPort = reader->getFieldValueAsInteger("NetworkSettings", "ttftp-client-port");
        nickname=reader->getFieldValueAsString("MultiplayerSettings","nickname");
        wallHeight = reader->getFieldValueAsDouble("MapSettings", "wall-height");
        mapPath = reader->getFieldValueAsString("MapSettings", "map-lookup-directory");
        shadowsEnabled = reader->getFieldValueAsBool("GraphicsSettings", "shadows");
        menuBackgroundMusic = reader->getFieldValueAsString("GameSounds", "menu-background");
        gameBackgroundMusic = reader->getFieldValueAsString("GameSounds", "game-background");
        lmgFireSound = reader->getFieldValueAsString("GameSounds", "lmg-fire");
        bgSoundVolume=reader->getFieldValueAsDouble("GameSounds","bg-sound-volume");
        bgSoundVolume=(bgSoundVolume<-1?.1:bgSoundVolume);
		(reader->getFieldValueAsString("MultiplayerSettings","player-color")=="blue"?color=0:color=1);

        maxDecals=reader->getFieldValueAsInteger("GraphicsSettings","max-decals");
        if(maxDecals==-1)
            maxDecals=30;

        sensivity=((reader->getFieldValueAsDouble("MultiplayerSettings","mouse-sensivity")<=0?5:reader->getFieldValueAsDouble("MultiplayerSettings","mouse-sensivity")));


        moveAnimationSpeed = reader->getFieldValueAsDouble("AnimationSpeeds", "move-speed");
        fireAnimationSpeed = reader->getFieldValueAsDouble("AnimationSpeeds", "fire-speed");
        moveSpeed=125;

        buildMap = true;
        singlePlayerMode = reader->getFieldValueAsBool("Debug", "singleplayer");
        if (buildMap)
            mapFileName = reader->getFieldValueAsString("MapSettings", "map-file-name");
        if (mapPath == "NULL")
            mapPath = "Map/";
        else
            mapPath = mapPath.find("/") == std::string::npos ? mapPath.substr(mapPath.find("/")) : mapPath;
		
        gameStarted = teamDM = gameLoaded=false;

        initializeLogger(gameLogFile);
        logger->addLine("game config file " + gameConfigFile + " loaded to memory & logger initialized");
		LogManager* logManager=new LogManager();
		logManager->createLog(ogreLogFile,true,false,false);
        root = OGRE_NEW Root(pluginsConfig,ogreConfig, "");
        ConfigFile configFile;
        configFile.load(resourcesConfig);

        //[start]taken from ogre framework
        Ogre::ConfigFile::SectionIterator seci = configFile.getSectionIterator();
        Ogre::String secName, typeName, archName;
        while (seci.hasMoreElements())
        {
            secName = seci.peekNextKey();
            Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
            Ogre::ConfigFile::SettingsMultiMap::iterator i;
            for (i = settings->begin(); i != settings->end(); ++i)
            {
                typeName = i->first;
                archName = i->second;
                Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
                    archName, typeName, secName);
			}
        }
        //[END]

            logger->addLine("ogre configuration has been read");
        root->showConfigDialog();
        renderWindow=root->initialise(true,"Team-Two");
            logger->addLine("window created");
        sceneManager=root->createSceneManager(ST_EXTERIOR_FAR,"core");
        localPlayer=NULL;
        mapMode=false;



        mainCamera=sceneManager->createCamera("MainCam");
        
        mainCamera->setNearClipDistance(1);mainCamera->setLodBias(2);
        mainCamera->setFarClipDistance(100000000);
        mainCamera->setAspectRatio(renderWindow->getWidth()/(float)renderWindow->getHeight());


        menuSceneManager=root->createSceneManager(ST_GENERIC,"menu");
        menuCamera=menuSceneManager->createCamera("MenuCam");
        menuCamera->setNearClipDistance(1);
        menuMode=true;


        viewPort=renderWindow->addViewport(mainCamera);
        dynamics=NULL;


        if(shadowsEnabled)
            sceneManager->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);
        else
            sceneManager->setShadowTechnique(Ogre::SHADOWTYPE_NONE);

        ResourceGroupManager::getSingletonPtr()->initialiseAllResourceGroups();

		logger->addLine("GameCore: scanning map files");
        lookupMapFiles(mapPath);
		logger->addLine("GameCore: --ok");
		logger->addLine("GameCore: initializing event listeners");
        initializeEventListeners();
		logger->addLine("GameCore: --ok");
		logger->addLine("GameCore: initializing CEGUI");
        initializeCEGUI();
		logger->addLine("GameCore: --ok");
		logger->addLine("GameCore: initializing menu");
        initializeMenu();
		menuController->showLoading();	
		root->renderOneFrame();
#if WINDOWS_PLATFORM
		//Sleep(5000);
#else 
		sleep(5);
#endif
		logger->addLine("GameCore: --ok");	
		logger->addLine("GameCore: initializing ingamemenu");
		initializeInGameGUI();
		logger->addLine("GameCore: --ok");	
		logger->addLine("GameCore: initializing networking");
        initializeNetworking();
		logger->addLine("GameCore: --ok");

        //=================================================DEBUG
        if (singlePlayerMode)
        {
            initializePhysics();
            logger->addLine("Physics initialized");
            initializeScene();
            logger->addLine("Scene initialized");
            if (buildMap)
                initializeMap(mapPath + mapFileName);
            logger->addLine("Map initialized");
            _initializeSinglePlayer();
            initializeItems();
            initializeTeleporters();

        }
             
         //=================================================
		logger->addLine("GameCore: initializing sounds");
        initializeSounds();
		logger->addLine("GameCore: --ok");
		root->addFrameListener(this);
        logger->addLine("GameLoop starting...");
		menuController->hideLoading();
        gameLoop();
    }
    else
        std::cout<<"configuration file not found!...\n";
}