CWindowClient::CWindowClient(CWindow &window) : CAbstractWindowClient(window) , m_defaultVAO(CArrayObject::do_bind_tag()) , m_mouseGrabber(window) , m_camera(CAMERA_EYE, CAMERA_AT, CAMERA_UP) { const vec4 BLACK_RGBA = {0, 0, 0, 1}; const float CAM_SPEED = 20; window.SetBackgroundColor(BLACK_RGBA); SetupOpenGLState(); m_camera.SetMoveSpeed(CAM_SPEED); m_renderSystem.SetupLight0(SUNLIGHT_DIRECTION, WHITE_RGBA, FADED_WHITE_RGBA); CSceneLoader loader(m_world); loader.LoadScene(SCENE_JSON); loader.LoadSkybox(SKYBOX_PLIST); // Добавляем систему, отвечающую за рендеринг моделей. m_world.addSystem(m_renderSystem); // Добавляем систему, отвечающую за проигрывание анимаций. m_world.addSystem(m_animationSystem); // После активации новых сущностей или деактивации, // а при добавления новых систем следует // вызывать refresh() у мира. m_world.refresh(); }
CWindowClient::CWindowClient(CWindow &window) : CAbstractWindowClient(window) , m_defaultVAO(CArrayObject::do_bind_tag()) , m_keplerSystem(m_timeController) , m_rotationSystem(m_timeController) , m_mouseGrabber(window) , m_camera(CAMERA_EYE) { const vec4 BLACK_RGBA = {0, 0, 0, 1}; window.SetBackgroundColor(BLACK_RGBA); SetupOpenGLState(); m_renderSystem.SetupLight0(SUNLIGHT_POSITION, WHITE_RGBA, FADED_WHITE_RGBA); CSceneLoader loader(m_world); loader.LoadScene("res/solar_system/solar_system_2012.json"); loader.LoadSkybox("res/solar_system/skybox.plist"); // Добавляем систему, отвечающую за изменение положения планет // согласно их орбитам и прошедшему времени по законам Кеплера. m_world.addSystem(m_keplerSystem); // Добавляем систему, выполняющую вращение тел вокруг своих осей. m_world.addSystem(m_rotationSystem); // Добавляем систему, отвечающую за обновление систем частиц m_world.addSystem(m_particleUpdateSystem); // Добавляем систему, отвечающую за рендеринг планет. m_world.addSystem(m_renderSystem); // Добавляем систему, отвечающую за рендеринг систем частиц m_world.addSystem(m_particleRenderSystem); // После активации новых сущностей или деактивации, // а при добавления новых систем следует // вызывать refresh() у мира. m_world.refresh(); }