/* * ScreenManager.cpp * TAU * * Created by Ivan Safrin on 3/15/08. * Copyright 2008 __MyCompanyName__. All rights reserved. * */ #include "PolyScreenManager.h" using namespace Polycode; ScreenManager::ScreenManager() : EventDispatcher() { } ScreenManager::~ScreenManager() { } void ScreenManager::removeScreen(Screen *screen) { for(int i=0;isetRenderer(CoreServices::getInstance()->getRenderer()); screens.push_back(screen); } void ScreenManager::handleEvent(Event *event) { // if(event->getDispatcher() == CoreServices::getInstance()->getCore()->getInput()) { InputEvent *inputEvent = (InputEvent*)event; for(int i=0;ihandleInputEvent(inputEvent); } // } } /* Screen *ScreenManager::createScreen(int screenType) { Screen *screen; switch(screenType) { case REGULAR_SCREEN: screen = new Screen(); break; case PHYSICS_SCREEN: screen = new PhysicsScreen(); break; } screen->setRenderer(CoreServices::getInstance()->getRenderer()); screens.push_back(screen); return screen; } */ void ScreenManager::Update() { Renderer *renderer = CoreServices::getInstance()->getRenderer(); for(int i=0;ienabled) { if(!screens[i]->usesNormalizedCoordinates()) { renderer->setOrthoMode(renderer->getXRes(), renderer->getYRes()); } else { Number yCoordinateSize = screens[i]->getYCoordinateSize(); Number ratio = ((Number)renderer->getXRes())/((Number)renderer->getYRes()); renderer->setOrthoMode(ratio*yCoordinateSize, yCoordinateSize); } if(screens[i]->hasFilterShader()) { screens[i]->drawFilter(); } else { screens[i]->Render(); } } } }