#include "stdafx.h" #include "SGameScene.h" #include "SGameSceneActor.h" #include "SGameSceneManager.h" using namespace rp; SGameScene::SGameScene( SGameSceneManager& sceneMgr, SGameScene* parent, const char* sceneName ) : mSceneMgr ( sceneMgr ) , mParent ( parent ) , mSceneName ( sceneName ) , mIsActivated ( false ) , mLocalVisibility ( 1.f ) , mWorldVisibility ( 1.f ) { } SGameScene::~SGameScene() { } void SGameScene::onTick() { if( !mActors.empty() ) std::for_each( mActors.begin(), mActors.end(), std::bind2nd( std::mem_fun( &SGameSceneActor::update ), this ) ); } void SGameScene::activate( bool activity ) { if( mIsActivated != activity ) { mIsActivated = activity; if( mIsActivated ) { if( !mActors.empty() ) std::for_each( mActors.begin(), mActors.end(), std::mem_fun( &SGameSceneActor::onActivate ) ); onActivate(); } else { if( !mActors.empty() ) std::for_each( mActors.begin(), mActors.end(), std::mem_fun( &SGameSceneActor::onDeactivate ) ); onDeactivate(); } } } void SGameScene::updateVisibility() { if( mParent ) mWorldVisibility = mLocalVisibility * mParent->getWorldVisibility(); else mWorldVisibility = mLocalVisibility; } void SGameScene::registerActor( SGameSceneActor& actor ) { mActors.push_back( &actor ); }