<commit_before>﻿//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
#pragma once
#include <Framework/IScene.h>
#include <Utility/Timer.h>
#include <Multimedia/Input.h>
#include <Framework/Camera.h>

namespace SDX
{
/** シーンを管理するクラス.*/
/**    \include DirectorSample.h*/
class Director
{
private:
    std::vector< std::shared_ptr<IScene> > scenes;

    Director(){};

    static Director& Single()
    {
        static Director instance; 
        return instance;
    }
public:
    /** 実行開始.*/
    static void Run()
    {
        Time::ResetFPS();

        while( System::Update() )
        {
            if( Single().scenes.size() == 0 ) break;
            Single().scenes.back()->Update();
            Single().scenes.back()->Draw();
            //更新処理
            if( Camera::Now() ) Camera::Now()->Update();
            Time::CheckFPS();

            Remove();
        }
    }

    /** 消滅したSceneを片付ける.*/
    static void Remove()
    {
        auto it = Single().scenes.begin();

        while( it != Single().scenes.end() )
        {
            if( (*it)->IsEnd() )
            {
                it = Single().scenes.erase(it);
                if(Single().scenes.size() == 0 )break;
                continue;
            }
            it++;
        }
    }

    /** Sceneを追加する.*/
    /** 追加したシーンがアクティブになる\n
        既に追加されているシーンの場合アクティブ化する*/
    static void AddScene( IScene* 追加するシーン )
    {
        //既に存在する場合移動のみ
        auto it = Single().scenes.begin();
        while( it != Single().scenes.end() )
        {
            if ((*it).get() == 追加するシーン)
            {
                Single().scenes.push_back( (*it) );
                return;
            }
            ++it;
        }
        //存在していない場合初期化して追加
        追加するシーン->Init();
        Single().scenes.emplace_back(追加するシーン);
    }

    /** 上からインデックス番目のシーンを取得.*/
    /** 0で現在アクティブなシーン*/
    static IScene* GetScene(int インデックス)
    {
        return Single().scenes[Single().scenes.size() - インデックス - 1].get();
    }
};
}









<commit_msg>Directorクラスに描画停止機能追加<commit_after>﻿//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
#pragma once
#include <Framework/IScene.h>
#include <Utility/Timer.h>
#include <Multimedia/Input.h>
#include <Framework/Camera.h>

namespace SDX
{
/** シーンを管理するクラス.*/
/**    \include DirectorSample.h*/
class Director
{
private:
    std::vector< std::shared_ptr<IScene> > scenes;

    Director(){};

    static Director& Single()
    {
        static Director instance; 
        return instance;
    }
public:
    /** 実行開始.*/
    static void Run()
    {
        Time::ResetFPS();

        while( System::Update( IsDraw() ) )
        {
            if( Single().scenes.size() == 0 ) break;
            Single().scenes.back()->Update();
            if( IsDraw() ){ Single().scenes.back()->Draw(); }
            //更新処理
            if( Camera::Now() ){ Camera::Now()->Update(); }
            Time::CheckFPS();

            Remove();
        }
    }

    /** 消滅したSceneを片付ける.*/
    static void Remove()
    {
        auto it = Single().scenes.begin();

        while( it != Single().scenes.end() )
        {
            if( (*it)->IsEnd() )
            {
                it = Single().scenes.erase(it);
                if(Single().scenes.size() == 0 )break;
                continue;
            }
            it++;
        }
    }

    /** Sceneを追加する.*/
    /** 追加したシーンがアクティブになる\n
        既に追加されているシーンの場合アクティブ化する*/
    static void AddScene( IScene* 追加するシーン )
    {
        //既に存在する場合移動のみ
        auto it = Single().scenes.begin();
        while( it != Single().scenes.end() )
        {
            if ((*it).get() == 追加するシーン)
            {
                Single().scenes.push_back( (*it) );
                return;
            }
            ++it;
        }
        //存在していない場合初期化して追加
        追加するシーン->Init();
        Single().scenes.emplace_back(追加するシーン);
    }

    /** 上からインデックス番目のシーンを取得.*/
    /** 0で現在アクティブなシーン*/
    static IScene* GetScene(int インデックス)
    {
        return Single().scenes[Single().scenes.size() - インデックス - 1].get();
    }

    static bool& IsDraw()
    {
        static bool isDraw = true;
        return isDraw;
    }    
};
}










{'fraction_non_alphanumeric': 0.16246239296459153, 'fraction_numerical': 0.004165702383707475, 'mean_word_length': 1.662969808995687, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6302444', 'n_tokens_mistral': 1607, 'n_tokens_neox': 1552, 'n_words': 244}