コード例 #1
0
ファイル: reader_xml.cpp プロジェクト: take-cheeze/EasyRPG
////////////////////////////////////////////////////////
/// End Element
////////////////////////////////////////////////////////
void XmlReader::EndElement(const char* name) {
	XmlHandler* handler = handlers.back();
	handler->CharacterData(*this, buffer);
	handlers.pop_back();
	if (handler != handlers.back())
		delete handler;
	handlers.back()->EndElement(*this, name);
}
コード例 #2
0
// Loads the scene data
void OculusWorldDemoApp::PopulateScene(const char *fileName)
{    
    XmlHandler xmlHandler;         
    if(!xmlHandler.ReadFile(fileName, pRender, &MainScene, &CollisionModels, &GroundCollisionModels))
    {
        Menu.SetPopupMessage("FILE LOAD FAILED");
        Menu.SetPopupTimeout(10.0f, true);
    }    

    MainScene.SetAmbient(Color4f(1.0f, 1.0f, 1.0f, 1.0f));
    
    // Handy cube.
    Ptr<Model> smallGreenCubeModel = *Model::CreateBox(Color(0, 255, 0, 255), Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.004f, 0.004f, 0.004f));
    SmallGreenCube.World.Add(smallGreenCubeModel);

    String mainFilePathNoExtension = MainFilePath;
    mainFilePathNoExtension.StripExtension();


    // 10x10x10 cubes.
    Ptr<Fill> fillR = *CreateTextureFill(pRender, mainFilePathNoExtension + "_redCube.tga");
    PopulateCubeFieldScene(&RedCubesScene, fillR.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

    // 10x10x10 cubes.
    Ptr<Fill> fillB = *CreateTextureFill(pRender, mainFilePathNoExtension + "_blueCube.tga");
    PopulateCubeFieldScene(&BlueCubesScene, fillB.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

	// Anna: OculusWorldDemo/Assets/Tuscany/Tuscany_OculusCube.tga file needs to be added    
    Ptr<Fill> imageFill = *CreateTextureFill(pRender, mainFilePathNoExtension + "_OculusCube.tga");
    PopulateCubeFieldScene(&OculusCubesScene, imageFill.GetPtr(), 11, 4, 35, Vector3f(0.0f, 0.0f, -6.0f), 0.5f);

	
    float r = 0.01f;
    Ptr<Model> purpleCubesModel = *new Model(Prim_Triangles);
	for (int i = 0; i < 10; i++)
		for (int j = 0; j < 10; j++)
			for (int k = 0; k < 10; k++)
	            purpleCubesModel->AddSolidColorBox(i*0.25f-1.25f-r,j*0.25f-1.25f-r,k*0.25f-1.25f-r,
				                                   i*0.25f-1.25f+r,j*0.25f-1.25f+r,k*0.25f-1.25f+r,0xFF9F009F);
}
コード例 #3
0
// Loads the scene data
void OculusWorldDemoApp::PopulateScene(const char *fileName)
{
    ClearScene();

    XmlHandler xmlHandler;
    if(!xmlHandler.ReadFile(fileName, pRender, &MainScene, &CollisionModels, &GroundCollisionModels, SrgbRequested, AnisotropicSample))
    {
        Menu.SetPopupMessage("FILE LOAD FAILED");
        Menu.SetPopupTimeout(10.0f, true);
    }

    MainScene.SetAmbient(Color4f(1.0f, 1.0f, 1.0f, 1.0f));

    String mainFilePathNoExtension = MainFilePath;
    mainFilePathNoExtension.StripExtension();

    unsigned int fillTextureLoadFlags = 0;
    fillTextureLoadFlags |= SrgbRequested ? TextureLoad_SrgbAware : 0;
    fillTextureLoadFlags |= AnisotropicSample ? TextureLoad_Anisotropic : 0;

    // 10x10x10 cubes.
    Ptr<Fill> fillR = *CreateTextureFill(pRender, mainFilePathNoExtension + "_greenCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&GreenCubesScene, fillR.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

    // 10x10x10 cubes.
    Ptr<Fill> fillB = *CreateTextureFill(pRender, mainFilePathNoExtension + "_redCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&RedCubesScene, fillB.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

	// Anna: OculusWorldDemo/Assets/Tuscany/Tuscany_OculusCube.tga file needs to be added
    Ptr<Fill> imageFill = *CreateTextureFill(pRender, mainFilePathNoExtension + "_OculusCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&OculusCubesScene, imageFill.GetPtr(), 11, 4, 35, Vector3f(0.0f, 0.0f, -6.0f), 0.5f);

    // Handy untextured green cube.
    Ptr<Model> smallGreenCubeModel = *Model::CreateBox(Color(0, 255, 0, 255), Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.004f, 0.004f, 0.004f));
    SmallGreenCube.World.Add(smallGreenCubeModel);

    // Textured cubes.
    Ptr<Model> smallOculusCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.004f, 0.004f, 0.004f));
    smallOculusCubeModel->Fill = imageFill;
    SmallOculusCube.World.Add(smallOculusCubeModel);

    Ptr<Model> smallOculusGreenCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.004f, 0.004f, 0.004f));
    smallOculusGreenCubeModel->Fill = fillR;
    SmallOculusGreenCube.World.Add(smallOculusGreenCubeModel);

    Ptr<Model> smallOculusRedCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), Vector3f(0.004f, 0.004f, 0.004f));
    smallOculusRedCubeModel->Fill = fillB;
    SmallOculusRedCube.World.Add(smallOculusRedCubeModel);

    int textureLoadFlags = 0;
    textureLoadFlags |= SrgbRequested ? TextureLoad_SrgbAware : 0;
    textureLoadFlags |= AnisotropicSample ? TextureLoad_Anisotropic : 0;
    textureLoadFlags |= TextureLoad_MakePremultAlpha;
    textureLoadFlags |= TextureLoad_SwapTextureSet;

    Ptr<File> imageFile = *new SysFile(mainFilePathNoExtension + "_redCube.tga");
    if (imageFile->IsValid())
        TextureRedCube = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    imageFile = *new SysFile(mainFilePathNoExtension + "_greenCube.tga");
    if (imageFile->IsValid())
        TextureGreenCube = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    imageFile = *new SysFile(mainFilePathNoExtension + "_OculusCube.tga");
    if (imageFile->IsValid())
        TextureOculusCube = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    imageFile = *new SysFile(mainFilePathNoExtension + "_Cockpit_Panel.tga");
    if (imageFile->IsValid())
        CockpitPanelTexture = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    XmlHandler xmlHandler2;
    String controllerFilename = MainFilePath.GetPath() + "LeftController.xml";
    if (!xmlHandler2.ReadFile(controllerFilename.ToCStr(), pRender, &ControllerScene, NULL, NULL))
    {
        Menu.SetPopupMessage("CONTROLLER FILE LOAD FAILED");
        Menu.SetPopupTimeout(10.0f, true);
    }
    ControllerScene.AddLight(Vector3f(0, 30.0f, 0), Color4f(1.0f, 1.0f, 1.0f, 1.0f));
    ControllerScene.AddLight(Vector3f(0, -10.0f, 0), Color4f(.2f, .2f, .2f, 1.0f));
}
コード例 #4
0
// Loads the scene data
void OculusWorldDemoApp::PopulateScene(const char *fileName)
{
    ClearScene();

    XmlHandler xmlHandler;
    if(!xmlHandler.ReadFile(fileName, pRender, &MainScene, &CollisionModels, &GroundCollisionModels, SrgbRequested, AnisotropicSample))
    {
        Menu.SetPopupMessage("FILE LOAD FAILED");
        Menu.SetPopupTimeout(10.0f, true);
    }

    MainScene.SetAmbient(Color4f(1.0f, 1.0f, 1.0f, 1.0f));

    String mainFilePathNoExtension = MainFilePath;
    mainFilePathNoExtension.StripExtension();

    unsigned int fillTextureLoadFlags = 0;
    fillTextureLoadFlags |= SrgbRequested ? TextureLoad_SrgbAware : 0;
    fillTextureLoadFlags |= AnisotropicSample ? TextureLoad_Anisotropic : 0;

    // 10x10x10 cubes.
    Ptr<Fill> fillR = *CreateTextureFill(pRender, mainFilePathNoExtension + "_greenCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&GreenCubesScene, fillR.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

    Ptr<Fill> fillB = *CreateTextureFill(pRender, mainFilePathNoExtension + "_redCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&RedCubesScene, fillB.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);
    
    Ptr<Fill> fillY = *CreateTextureFill(pRender, mainFilePathNoExtension + "_yellowCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&YellowCubesScene, fillY.GetPtr(), 10, 10, 10, Vector3f(0.0f, 0.0f, 0.0f), 0.4f);

    Ptr<Fill> imageFill = *CreateTextureFill(pRender, mainFilePathNoExtension + "_OculusCube.tga", fillTextureLoadFlags);
    PopulateCubeFieldScene(&OculusCubesScene, imageFill.GetPtr(), 11, 4, 35, Vector3f(0.0f, 0.0f, -6.0f), 0.5f);

    Vector3f blockModelSizeVec = Vector3f(BlockModelSize, BlockModelSize, BlockModelSize);

    // Handy untextured green cube.
    Ptr<Model> smallGreenCubeModel = *Model::CreateBox(Color(0, 255, 0, 255), Vector3f(0.0f, 0.0f, 0.0f), blockModelSizeVec);
    SmallGreenCube.World.Add(smallGreenCubeModel);

    // Textured cubes.
    Ptr<Model> smallOculusCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), blockModelSizeVec);
    smallOculusCubeModel->Fill = imageFill;
    SmallOculusCube.World.Add(smallOculusCubeModel);

    Ptr<Model> smallOculusGreenCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), blockModelSizeVec);
    smallOculusGreenCubeModel->Fill = fillR;
    SmallOculusGreenCube.World.Add(smallOculusGreenCubeModel);

    Ptr<Model> smallOculusRedCubeModel = *Model::CreateBox(Color(255, 255, 255, 255), Vector3f(0.0f, 0.0f, 0.0f), blockModelSizeVec);
    smallOculusRedCubeModel->Fill = fillB;
    SmallOculusRedCube.World.Add(smallOculusRedCubeModel);

    int textureLoadFlags = 0;
    textureLoadFlags |= SrgbRequested ? TextureLoad_SrgbAware : 0;
    textureLoadFlags |= AnisotropicSample ? TextureLoad_Anisotropic : 0;
    textureLoadFlags |= TextureLoad_MakePremultAlpha;
    textureLoadFlags |= TextureLoad_SwapTextureSet;

    Ptr<File> imageFile = *new SysFile(mainFilePathNoExtension + "_OculusCube.tga");
    if (imageFile->IsValid())
        TextureOculusCube = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    imageFile = *new SysFile(mainFilePathNoExtension + "_Cockpit_Panel.tga");
    if (imageFile->IsValid())
        CockpitPanelTexture = *LoadTextureTgaTopDown(pRender, imageFile, textureLoadFlags, 255);

    XmlHandler xmlHandler2;
    String controllerFilename = MainFilePath.GetPath() + "LeftController.xml";
    if (!xmlHandler2.ReadFile(controllerFilename.ToCStr(), pRender, &ControllerScene, NULL, NULL))
    {
        Menu.SetPopupMessage("CONTROLLER FILE LOAD FAILED");
        Menu.SetPopupTimeout(10.0f, true);
    }
    ControllerScene.AddLight(Vector3f(0, 30.0f, 0), Color4f(1.0f, 1.0f, 1.0f, 1.0f));
    ControllerScene.AddLight(Vector3f(0, -10.0f, 0), Color4f(.2f, .2f, .2f, 1.0f));


    // Load "Floor Circle" models and textures - used to display floor for seated configuration.	
    Ptr<File>	 floorImageFile    = *new SysFile(mainFilePathNoExtension + "_SitFloorConcrete.tga");
    Ptr<Texture> roundFloorTexture = *LoadTextureTgaTopDown(pRender, floorImageFile, textureLoadFlags, 220);
    if (roundFloorTexture)
        roundFloorTexture->SetSampleMode(Sample_Anisotropic | Sample_Repeat);
    
    Ptr<ShaderFill> fill = *new ShaderFill(*pRender->CreateShaderSet());
    fill->GetShaders()->SetShader(pRender->LoadBuiltinShader(Shader_Vertex, VShader_MVP));
    fill->GetShaders()->SetShader(pRender->LoadBuiltinShader(Shader_Fragment, FShader_Texture));
    fill->SetTexture(0, roundFloorTexture);

    pRoundFloorModel[0] = *new Model(Prim_Triangles);
    pRoundFloorModel[0]->Fill = fill;
    AddFloorCircleModelVertices(pRoundFloorModel[0], 0.3f);
    OculusRoundFloor[0].World.Add(pRoundFloorModel[0]);

    pRoundFloorModel[1] = *new Model(Prim_Triangles);
    pRoundFloorModel[1]->Fill = fill;
    AddFloorCircleDonutModelVertices(pRoundFloorModel[1], 0.35f);
    OculusRoundFloor[1].World.Add(pRoundFloorModel[1]);

    if (ovr_GetTrackerCount(Session) > 0)
    	PositionalTracker.Init(Session, mainFilePathNoExtension, pRender, SrgbRequested, AnisotropicSample);


}