Example #1
0
    bool Application::initInternal(InitParam& initParam, const char* title, WNDPROC wndProc)
    {
        System::setApplication(this);

        //Initialize Window
        //-----------------------------------------------------------------
        //ウィンドウサイズ、ビューポートサイズはバックバッファと同じにする。
        //デバイスのパラメータにウィンドウハンドルを渡す
        lgfx::Window::InitParam windowParam;
        windowParam.style_ = initParam.windowParam_.style_;
        windowParam.exStyle_ = initParam.windowParam_.exStyle_;
        windowParam.width_ = initParam.gfxParam_.backBufferWidth_;
        windowParam.height_ = initParam.gfxParam_.backBufferHeight_;
        windowParam.title_ = title;
        windowParam.wndProc_ = wndProc;
        if(!window_.create(windowParam)){
            return false;
        }
        System::setWindow(&window_);

        //Initialize Graphics
        //-----------------------------------------------------------------
        initParam.gfxParam_.windowHandle_ = window_.getHandle();
#if defined(_WIN32)
        ImmAssociateContext(initParam.gfxParam_.windowHandle_, NULL); //IME OFF
#endif
        if(false == lgfx::initializeGraphics(initParam.gfxParam_)){
            window_.destroy();
            return false;
        }

        //Initialize Input
        //-----------------------------------------------------------------
        initParam.inputParam_.windowHandle_ = initParam.gfxParam_.windowHandle_;
        if(linput::Error_None != input_.initialize(initParam.inputParam_)){
            return false;
        }
        System::setInput(&input_);

        //Initialize Timer
        //-----------------------------------------------------------------
        timer_.reset();
        System::setTimer(&timer_);

        //Initialize FileSystem
        //-----------------------------------------------------------------
        lcore::FileSystem* fileSystem = LNEW lcore::FileSystem();
        System::setFileSystem(fileSystem);

        //Initialize Sound
        //-----------------------------------------------------------------
        lsound::Context::InitParam soundInitParam;
        soundInitParam.numQueuedBuffers_ = initParam.soundParam_.numQueuedBuffers_;
        soundInitParam.maxPlayers_ = initParam.soundParam_.maxPlayers_;
        soundInitParam.maxUserPlayers_ = initParam.soundParam_.maxUserPlayers_;
        soundInitParam.waitTime_ = initParam.soundParam_.waitTime_;
        if(!lsound::Context::initialize(soundInitParam)){
            return false;
        }
        lsound::Context& context = lsound::Context::getInstance();
        context.setGain(initParam.soundParam_.masterGain_);

        //Initialize Resources
        //-----------------------------------------------------------------
        Resources* resources = Resources::create(4, fileSystem);
        resources->getInputLayoutFactory().loadDefaults();
        resources->getShaderManager().loadDefaultShaders();

        if(initParam.rendererParam_.renderWidth_<=0){
            initParam.rendererParam_.renderWidth_ = initParam.gfxParam_.backBufferWidth_;
        }
        if(initParam.rendererParam_.renderHeight_<=0){
            initParam.rendererParam_.renderHeight_ = initParam.gfxParam_.backBufferHeight_;
        }
        System::setResources(resources);

        //Initialize CollideManager
        //-----------------------------------------------------------------
        CollideManager* collideManager = LNEW CollideManager();
        System::setCollideManager(collideManager);

        //Initialize Renderer
        //-----------------------------------------------------------------
        initParam.rendererParam_.shadowMapFormat_ = initParam.gfxParam_.shadowMapFormat_;
        Renderer* renderer = LNEW Renderer();
        renderer->initialize(initParam.rendererParam_);
        System::setRenderer(renderer);

        //Initialize ECSManager
        //-----------------------------------------------------------------
        ECSManager* ecsManager = ECSManager::create(initParam.ecsParam_);
        if(NULL == ecsManager){
            return false;
        }
        System::setECSManager(ecsManager);

        //Initialize RenderGraph
        //-----------------------------------------------------------------
        graph::RenderGraph* renderGraph = LNEW graph::RenderGraph();
        System::setRenderGraph(renderGraph);

        return true;
    }