59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
#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 );
|
|
} |