[C++]『ゲームプログラミングC++』Chapter02 Game::UpdateGame

学習経過のメモ書きです。進度チェック用なので私以外には意味のない記事でしょう。

サンプルコードをつぶさにチェックし意味を把握するという地味な作業です。日本語のコメントに書き換えまたは追加しています。

私にとっては新しい分野かつ英語ユーザーが書いたコード&コメントなのでこういった作業をしないとなかなか頭に定着しません。

まあのんびり取り組みます。

void Game::UpdateGame(){
	// 1コマ16ms経過するまでの処理(特になし)
	while (!SDL_TICKS_PASSED(SDL_GetTicks(), mTicksCount + 16)){
	}

	// 1ループ時間を算出
	float deltaTime = (SDL_GetTicks() - mTicksCount) / 1000.0f;
	if (deltaTime > 0.05f){
		deltaTime = 0.05f;
	}

	// SDL初期化からの経過時間
	mTicksCount = SDL_GetTicks();

	// ActorとComponentsのUpdate
	mUpdatingActors = true;
	for (auto actor : mActors){
		actor->Update(deltaTime); 
	}
	mUpdatingActors = false;

	// 保留ActorのmActorsへの追加
	for (auto pending : mPendingActors){
		mActors.emplace_back(pending);
	}
	mPendingActors.clear();

	// EDead状態ActorのdaadActorsへの追加
	std::vector<Actor*> deadActors;
	for (auto actor : mActors){
		if (actor->GetState() == Actor::EDead){
			deadActors.emplace_back(actor);
		}
	}

	// deadActorsのメモリ解放
	for (auto actor : deadActors){
		delete actor;
	}
}