CameraRef Camera::create(const EdsCameraRef& camera) { return CameraRef(new Camera(camera))->shared_from_this(); }
CameraRef Camera::create() { return CameraRef(new Camera()); }
Scene::Scene(Vect2 avatarPosition) : GameObject() , m_acceptInput(true), m_outOfBoundsTimer(0), m_infoButtonTimer(0) { m_timeStep = 1.0f/60.0f; m_velIterations = 10; m_posIterations = 10; // setup initial world attributes b2Vec2 gravity; gravity.Set(0.0f, 10.0f); bool doSleep = true; mp_physicsWorld = new b2World(gravity, doSleep); mp_physicsWorld->SetAutoClearForces(false); m_blueprintIsActive = false; m_touchedDown = false; mp_contactListener = new Deadbeef::ContactListener(); mp_physicsWorld->SetContactListener(mp_contactListener); #ifdef DEBUG mp_debugDraw = new b2DebugDrawer_OGL_ES(); mp_debugDraw->SetFlags(b2DebugDraw::e_shapeBit | b2DebugDraw::e_jointBit | b2DebugDraw::e_aabbBit);// | b2DebugDraw::e_pairBit | b2DebugDraw::e_centerOfMassBit); mp_physicsWorld->SetDebugDraw(mp_debugDraw); #endif //setup Avatar m_Avatar = new Avatar(*mp_physicsWorld, avatarPosition); // make ground body b2BodyDef groundBodyDef; groundBodyDef.position.Set(0.0f, 24.0f); mp_groundBody = mp_physicsWorld->CreateBody(&groundBodyDef); // attach ground fixture b2PolygonShape groundShape; groundShape.SetAsBox(128.0f, 1.0f); mp_groundBody->CreateFixture(&groundShape, 0.0f); // make ceiling body b2BodyDef skyBodyDef; skyBodyDef.position.Set(0.0f, -20.0f); mp_skyBody = mp_physicsWorld->CreateBody(&skyBodyDef); // attach ground fixture b2PolygonShape skyShape; skyShape.SetAsBox(128.0f, 1.0f); mp_skyBody->CreateFixture(&skyShape, 0.0f); Camera* newCamera = new Camera(*m_Avatar); mr_camera = CameraRef(newCamera); mp_cloudEmitter = new ParticleEmitter(Vect2(0, 0), 100, SpawnDefinitionRef(new CloudParticles(mr_camera))); mr_missionBrief = PopUpSpriteRef(new PopUpSprite("MissionBrief:MissionBrief", Vect2(16, 12), 1.0)); // setup blueprint button mp_bluePrintButton = new Sprite("menu:InfoButton"); mp_bluePrintButton->position.x = mr_camera->GetPosition().x + 32 - mp_bluePrintButton->size.x *.75; mp_bluePrintButton->position.y = mr_camera->GetPosition().y + 0 + mp_bluePrintButton->size.x *.75; //printf("%f, %f\n", mp_bluePrintButton->position.x, mp_bluePrintButton->position.y); mr_camera->AddChild(*m_Avatar); mr_camera->AddChild(*m_Avatar->GetMagnet()); mr_camera->AddChild(*mp_cloudEmitter); mr_camera->AddChild(*mp_bluePrintButton); }