【includeファイル】 Compiled/include/Effekseer.h Compiled/include/EffekseerRendererDX11.h Compiled/include/EffekseerSoundXAudio2.h を、BaseCrossの Libs/include/Effekseer.h Libs/include/EffekseerRendererDX11.h Libs/include/EffekseerSoundXAudio2.h としてコピー。 【libファイル(デバッグ用)】 Compiled/lib/VS2015/Debug/Effekseer.lib Compiled/lib/VS2015/Debug/EffekseerRendererDX11.lib Compiled/lib/VS2015/Debug/EffekseerSoundXAudio2.lib を Libs/lib/Dx11/Debug/Effekseer.lib Libs/lib/Dx11/Debug/EffekseerRendererDX11.lib Libs/lib/Dx11/Debug/EffekseerSoundXAudio2.lib としてコピー。 【libファイル(リリース用)】 Compiled/lib/VS2015/Release/Effekseer.lib Compiled/lib/VS2015/Release/EffekseerRendererDX11.lib Compiled/lib/VS2015/Release/EffekseerSoundXAudio2.lib を Libs/lib/Dx11/Release/Effekseer.lib Libs/lib/Dx11/Release/EffekseerRendererDX11.lib Libs/lib/Dx11/Release/EffekseerSoundXAudio2.lib としてコピー。
図0113a
#pragma once
#include "EfkInterface.h"
#include "ProjectShader.h"
#include "ProjectBehavior.h"
//以下略
class GameStage : public Stage {
//エフェクトのインターフェイス
shared_ptr<EfkInterface> m_EfkInterface;
//中略
public:
//中略
//初期化
virtual void OnCreate()override;
//エフェクトのインターフェイスの取得
shared_ptr<EfkInterface> GetEfkInterface() const {
return m_EfkInterface;
}
//更新
virtual void OnUpdate() override;
//描画
virtual void OnDraw() override;
};
void GameStage::OnCreate() {
try {
//中略
//エフェクト作成
m_EfkInterface = ObjectFactory::Create<EfkInterface>();
//中略
//プレーヤーの作成
CreatePlayer();
}
catch (...) {
throw;
}
}
//更新
void GameStage::OnUpdate() {
m_EfkInterface->OnUpdate();
}
//描画
void GameStage::OnDraw() {
auto& camera = GetView()->GetTargetCamera();
m_EfkInterface->SetViewProj(camera->GetViewMatrix(), camera->GetProjMatrix());
m_EfkInterface->OnDraw();
}
class Player : public GameObject {
//エフェクト
shared_ptr<EfkEffect> m_EfkEffect;
//エフェクト実行オブジェクト
shared_ptr<EfkPlay> m_EfkPlay;
//中略
public:
//中略
};
void Player::OnCreate() {
//中略
//エフェクトの初期化
wstring DataDir;
App::GetApp()->GetDataDirectory(DataDir);
wstring TestEffectStr = DataDir + L"Effects\\test.efk";
auto ShEfkInterface = GetTypeStage<GameStage>()->GetEfkInterface();
m_EfkEffect = ObjectFactory::Create<EfkEffect>(ShEfkInterface, TestEffectStr);
//ステートマシンの構築
m_StateMachine.reset(new StateMachine<Player>(GetThis<Player>()));
//最初のステートをPlayerDefaultに設定
m_StateMachine->ChangeState(PlayerDefaultState::Instance());
}
//Aボタンハンドラ
void Player::OnPushA() {
if (GetStateMachine()->GetCurrentState() == PlayerDefaultState::Instance()) {
auto Ptr = GetComponent<Transform>();
//エフェクトのプレイ
auto ShEfkInterface = GetTypeStage<GameStage>()->GetEfkInterface();
m_EfkPlay = ObjectFactory::Create<EfkPlay>(m_EfkEffect, Ptr->GetPosition());
//サウンドのプレイ
auto XAPtr = App::GetApp()->GetXAudio2Manager();
XAPtr->Start(L"cursor", 0, 0.5f);
//通常ステートならジャンプステートに移行
GetStateMachine()->ChangeState(PlayerJumpState::Instance());
}
}