Пример #1
0
        void init(std::shared_ptr<void> event_data) {
            // Some kind of SDL_Init bug is happening here that shows that SDL_INIT_EVENTS is already set even tough it
            // isn't

            Uint32 sdl_inited = SDL_WasInit(SDL_INIT_EVERYTHING);
            // if(sdl_inited & SDL_INIT_EVENTS == 0) {
            SDL_InitSubSystem(SDL_INIT_EVENTS);
            //}
            if ((sdl_inited & SDL_INIT_GAMECONTROLLER) == 0) {
                SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER);
            }
            if ((sdl_inited & SDL_INIT_JOYSTICK) == 0) {
                SDL_InitSubSystem(SDL_INIT_JOYSTICK);
            }

            // If something else is managing events then lets just listen and translate key presses
            if (sdl_inited != 0) {
                std::cout << "BasicSDLInput is controlling SDL Events" << std::endl;

                Subscriber* translating_subscriber =
                    new Subscriber(this, Function_Cast(&BasicSDLInputStaticInit::translate), false);
                Dispatcher::GetInstance()->AddEventSubscriber(translating_subscriber, "EVENT_SDL_EVENT");
            }
            // else {
            std::cout << "BasicSDLInput is translating SDL Events" << std::endl;

            // Otherwise lets control the PollEvent loop
            Subscriber* sdl_event_control =
                new Subscriber(this, Function_Cast(&BasicSDLInputStaticInit::event_loop), false);
            Dispatcher::GetInstance()->AddEventSubscriber(sdl_event_control, "EVENT_APP_RUN");
            //}
        }
Пример #2
0
bool GLCamera::initialize() {
    velocity = 1;
    up_vector = glm::vec3(0.0, 1.0, 0.0);
    position = glm::vec3(0, 5, -10);

    input_subscriber = new Subscriber(this, Function_Cast(&GLCamera::onInput), false);
    Dispatcher::GetInstance()->AddEventSubscriber(input_subscriber, "EVENT_INPUT");

    update_subscriber = new Subscriber(this, Function_Cast(&GLCamera::update));
    Dispatcher::GetInstance()->AddEventSubscriber(update_subscriber, "EVENT_COMPONENT_UPDATE");

    tracked_keys[SDLK_UP] = false;
    tracked_keys[SDLK_DOWN] = false;
    tracked_keys[SDLK_LEFT] = false;
    tracked_keys[SDLK_RIGHT] = false;

    return true;
}
Пример #3
0
bool App3D::initialize(std::shared_ptr<Renderer> rend) {
    std::cout << "App3D::initialize1 " << renderer << std::endl;

    renderer = std::dynamic_pointer_cast<OpenGLRenderer>(rend);

    camera = new GLCamera();
    camera->initialize();

    std::cout << "App3D::initialize2 " << renderer << std::endl;

    renderer->set_camera(camera);

    model_store = new GLModelStore();
    model_store->loadAssets();

    timer = new Timer();
    timer->start();

    Subscriber* run_subscriber = new Subscriber(this, Function_Cast(&App3D::run), false);
    Dispatcher::GetInstance()->AddEventSubscriber(run_subscriber, "EVENT_APP_RUN");

    return true;
}
Пример #4
0
 BaseAppStaticInit() {
     init_subscriber = new Subscriber(this, Function_Cast(&BaseAppStaticInit::init), false);
     Dispatcher::GetInstance()->AddEventSubscriber(init_subscriber, "EVENT_RENDER_INIT_SUCCESS");
 }
Пример #5
0
 BasicSDLInputStaticInit() {
     SDL_Init(0);
     init_subscriber = new Subscriber(this, Function_Cast(&BasicSDLInputStaticInit::init), false);
     // Lets use the late event to see if something else initialized SDL for us
     Dispatcher::GetInstance()->AddEventSubscriber(init_subscriber, "EVENT_APP_INIT_SUCCESS_LATE");
 }